背景:
我的软件应用程序是一个多租户应用程序,客户可以登录并生成自己的clientID,以便与资源所有者密码流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作为承载令牌。客户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下,我已经:
我已经完成了以下操作,因为它们是必需的,但我认为不适用,因为只支持资源所有者密码流,并通过我自己的应用程序处理客户端注册:
当我导航到开发人员门户并查看端点时,我可以在我的Auth服务器下选择“Resource onwer password”。但是,当我选择此选项时,弹出窗口显示只允许我输入我的用户名和密码,而不是我的客户端ID。
如何设置Azure API管理以允许用户在设置授权时也指定他们想要使用的客户端ID - 或者我们是否需要在调用特定资源时更改我们的API以要求客户端ID而不是在申请令牌时?
这就是我需要的: