Oauth 2.0 Azure API管理和oAuth2的授权
我有一个WebAPI(a)托管在Azure上,受Azure B2C(B)保护,它被一个移动应用程序(C)调用-这一切都正常工作 我现在想允许第三方在同一平台上通过API管理访问我的API,但我对身份验证和“受众”感到非常困惑 API管理开发人员门户已根据Azure文档进行配置,因此当开发人员在门户上进行测试调用时,它会提示使用B2C域(B)进行身份验证。为此,它使用一个针对B2C域注册的应用程序 但是,当我想从第三方系统(D)实现API时,我需要允许系统在调用我的API(a)时模拟用户,以便在域(B)上的经过身份验证的用户上下文中进行操作 我知道B2C还不支持“代表”作为有效流,因此我使用hellojs在客户端上获取一个访问令牌,通过自定义头传递给第三方系统API,然后作为授权头附加到对API的调用中 API管理产品需要一个“订阅密钥”来标识第三方实现可以使用的产品Oauth 2.0 Azure API管理和oAuth2的授权,oauth-2.0,azure-ad-b2c,azure-api-management,Oauth 2.0,Azure Ad B2c,Azure Api Management,我有一个WebAPI(a)托管在Azure上,受Azure B2C(B)保护,它被一个移动应用程序(C)调用-这一切都正常工作 我现在想允许第三方在同一平台上通过API管理访问我的API,但我对身份验证和“受众”感到非常困惑 API管理开发人员门户已根据Azure文档进行配置,因此当开发人员在门户上进行测试调用时,它会提示使用B2C域(B)进行身份验证。为此,它使用一个针对B2C域注册的应用程序 但是,当我想从第三方系统(D)实现API时,我需要允许系统在调用我的API(a)时模拟用户,以便在域
https://yourwebapiAppIDURI/Read
但它们都有自己的应用程序ID
2) 对我来说,每个第三方实现
Azure广告上会有不同的应用程序,但这意味着我的Web API
需要识别大量观众ID并重定向
URI
是的,他们应该将其应用程序注册为B2C身份验证服务器的客户端。
应在AAD门户中设置第三方应用程序,以授权访问您的web API(.“访问您的web API名
”)。如果您的web API公开了任何作用域,那么也可以委派对这些作用域的访问
现在,当他们通过将用户重定向到身份验证服务器来启动令牌请求时,他们应该提供他们的客户端id和web API应用程序id URL的资源/范围值,例如https://yourwebapiAppIDURI/Read
这将产生一个具有以下内容的令牌:
与https://yourwebapiAppIDURI/
scp
读取的值正常,因此B2C不使用同意:
Azure AD B2C不会征求您的客户端应用程序用户的同意。相反,所有许可都由管理员根据上述应用程序之间配置的权限提供。如果撤销了应用程序的权限授予,则以前能够获得该权限的所有用户将不再能够获得该权限
谢谢@iandayman。你能澄清一下资源/范围id吗?Azure文档总是说“访问者”值是应用程序id(它是一个guid字符串),但你是说它更像一个url?此外,他们如何将其应用程序注册为客户端-api管理不允许在Active Directory上创建客户端,我是否每次都需要手动执行此操作?此github repo有一个示例:基本上,您可以根据请求在范围中输入Web api应用程序ID URI,但是正如您所说的,令牌中的受众
将是与该web API关联的相应应用程序ID Guid。这仍然意味着API管理只需要在受众中检查Web API的Guid。好的-我想我现在已经知道了。唯一没有发生的事情是它触发了同意屏幕?我在scope参数中指定了“openid”,然后指定了我需要的作用域,我可以看到它们被传递,但我从来没有看到同意屏幕?