繁体   English   中英

Azure API 管理 OAuth 2.0 资源所有者密码流客户端 ID

[英]Azure API Management OAuth 2.0 Resource Owner Password Flow Client ID

语境:

  • 我的软件应用程序是一个多租户应用程序,客户可以登录并生成他们自己的客户端 ID,以便与资源所有者密码流 OAuth 请求一起使用。

  • 我们的 OAuth 2.0 授权服务器内置于 WebAPI 中,并继承自 Microsoft 提供的 Microsoft.Owin.Security.OAuth.OAuthAuthorizationServerProvider 类。 目前,我们只支持一个流程(资源所有者密码)来获取令牌,它看起来像:

     POST /api/v1.0/token HTTP/1.1 Host: api.mysoftwareapp.com UserName={username}&Password={password}&grant_type=password&client_id={client_id}
  • 验证凭据和客户端 ID 后,我们发回 Microsoft.Owin.Security.OAuth.OAuthAuthorizationServerProvider 基类生成的访问令牌。 为了访问资源,用户需要在 Authorization 标头中提供 access_token 作为 Bearer 令牌。 不需要再次传入客户端 ID。 下面的例子:

     GET /api/v1.0/Partners HTTP/1.1 Host: api.mysoftwareapp.com Authorization: Bearer this_is_where_the_token_goes

我想实现 Azure API 管理的开发人员门户功能,并允许我的客户在进行测试调用时能够输入自己的用户名、密码和客户端 ID,以便他们在租户的上下文中获取数据(并最终 - 通过客户端 ID 启用速率限制)。

在发布者门户中,在 Security->OAuth 2.0 下,我已经:

  • 只检查了资源所有者密码授予类型。
  • 将我的授权请求方法指定为 POST。
  • 添加了我的令牌端点 URL。
  • 添加了 grant_type / password 作为附加正文参数。
  • 将资源所有者密码凭据留空。

我也做了以下,因为他们是必需的,但我相信不适用,因为只支持资源所有者密码流,并通过我自己的应用程序处理客户端注册:

  • 添加了我的授权端点 URL。
  • 选择“在正文中”作为我的客户端身份验证方法。
  • 添加了假客户端凭据。
  • 添加了一个虚假的客户注册页面 URL。

这是一个截图: 在此处输入图片说明

当我导航到开发人员门户并查看端点时,我可以在我的身份验证服务器下选择“资源密码”。 但是,当我选择它时,弹出窗口显示只允许我输入我的用户名和密码,而不是我的客户 ID。

我如何设置 Azure API 管理以允许用户在设置授权时也指定他们想要使用的客户端 ID - 或者我们是否需要更改我们的 API 以在调用特定资源时而不是何时需要客户端 ID请求令牌?

这就是我需要的:

我正在寻找的屏幕截图。

为了在 POST 正文中传递这些值,您需要将客户端身份验证方法从“基本”更改为“发布”。

转到发布者门户安全性,并将 OAuth2 服务器设置修改为如下所示:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM