AAD B2C - 未征得用户同意
AAD B2C - User consent not asked
上下文:
- 租户的 Azure AD B2C
- 已配置外部身份提供商
- 配置B2C登录流程(登录注册)
- API 后端在该租户的 AAD B2C 中定义为具有 2 个范围的应用程序
- “管理员和用户”可以同意
- 外部 client/Third 派对应用程序(机密)定义为此租户的 AAD B2C 中的应用程序
- 外部 client/Third 派对应用程序拥有 2 个范围的权限
- 状态为“无”,我没有授予管理员同意,我希望用户自己给予同意
- 在企业应用程序中 |用户设置
- 用户可以同意应用代表他们访问公司数据:是
- 在同意和许可中 |用户同意设置
=> 允许用户同意应用程序 - 所有用户都可以同意任何应用程序访问组织的数据。
授权URL:
https://xxx.b2clogin.com/xxx.onmicrosoft.com/oauth2/v2.0/authorize
?p=B2C_1_signup_login
&client_id=xxx
&nonce=defaultNonce
&redirect_uri=xxx
&scope=offline_access%20openid%20profile%20email%20https%3A%2F%xxx.onmicrosoft.com%2F6D6E9DF9-4546-47D8-8EDB-D65EC89A0E90%2Fproduct_scope_2
&response_type=code
&code_challenge=ThisIsntRandomButItNeedsToBe43CharactersLong
&code_challenge_method=plain
用户被重定向到外部 IDP 提供者,登录。不要求用户同意。使用 code
调用回调 url,可以将其换成 id_token
。受众 (aud
) 是客户端应用程序的 client_id
,而不是 API。
如果我授予管理员同意,code
可以换成 access_token
和 id_token
,并且观众可以(API 的 client_id
).
对于客户端应用程序 + 范围,我必须配置什么才能让用户同意?我找不到任何关于此的文章:用户同意和外部身份提供者。
您必须在 AAD B2C 中获得管理员许可。它没有针对用户的 OAuth2.0 同意提示。相反,它以使用条款为模型。除非您与第三方共享您的数据,否则您永远不会同意 Oauth。
https://github.com/azure-ad-b2c/samples/blob/master/policies/terms-of-service
In Consent and permissions | User consent settings => Allow user consent for apps - All users can consent for any app to access the organization's data.
与 AAD B2C 应用无关。
如果您还需要一些同意用户体验:
https://github.com/azure-ad-b2c/samples/tree/master/policies/service-consent
上下文:
- 租户的 Azure AD B2C
- 已配置外部身份提供商
- 配置B2C登录流程(登录注册)
- API 后端在该租户的 AAD B2C 中定义为具有 2 个范围的应用程序
- “管理员和用户”可以同意
- 外部 client/Third 派对应用程序(机密)定义为此租户的 AAD B2C 中的应用程序
- 外部 client/Third 派对应用程序拥有 2 个范围的权限
- 状态为“无”,我没有授予管理员同意,我希望用户自己给予同意
- 在企业应用程序中 |用户设置
- 用户可以同意应用代表他们访问公司数据:是
- 在同意和许可中 |用户同意设置 => 允许用户同意应用程序 - 所有用户都可以同意任何应用程序访问组织的数据。
授权URL:
https://xxx.b2clogin.com/xxx.onmicrosoft.com/oauth2/v2.0/authorize
?p=B2C_1_signup_login
&client_id=xxx
&nonce=defaultNonce
&redirect_uri=xxx
&scope=offline_access%20openid%20profile%20email%20https%3A%2F%xxx.onmicrosoft.com%2F6D6E9DF9-4546-47D8-8EDB-D65EC89A0E90%2Fproduct_scope_2
&response_type=code
&code_challenge=ThisIsntRandomButItNeedsToBe43CharactersLong
&code_challenge_method=plain
用户被重定向到外部 IDP 提供者,登录。不要求用户同意。使用 code
调用回调 url,可以将其换成 id_token
。受众 (aud
) 是客户端应用程序的 client_id
,而不是 API。
如果我授予管理员同意,code
可以换成 access_token
和 id_token
,并且观众可以(API 的 client_id
).
对于客户端应用程序 + 范围,我必须配置什么才能让用户同意?我找不到任何关于此的文章:用户同意和外部身份提供者。
您必须在 AAD B2C 中获得管理员许可。它没有针对用户的 OAuth2.0 同意提示。相反,它以使用条款为模型。除非您与第三方共享您的数据,否则您永远不会同意 Oauth。
https://github.com/azure-ad-b2c/samples/blob/master/policies/terms-of-service
In Consent and permissions | User consent settings => Allow user consent for apps - All users can consent for any app to access the organization's data.
与 AAD B2C 应用无关。
如果您还需要一些同意用户体验: https://github.com/azure-ad-b2c/samples/tree/master/policies/service-consent