【问题标题】:AAD B2C - User consent not askedAAD B2C - 未征得用户同意
【发布时间】:2021-03-23 21:09:46
【问题描述】:

上下文:

  • 租户的 Azure AD B2C
  • 已配置外部身份提供程序
  • 已配置 B2C 登录流程(登录注册)
  • API 后端在此租户的 AAD B2C 中定义为具有 2 个范围的应用程序
    • “管理员和用户”可以同意
  • 在此租户的 AAD B2C 中定义为应用程序的外部客户端/第三方应用程序(机密)
  • 外部客户端/第三方应用程序拥有 2 个作用域的权限
    • 状态为“无”,我没有授予管理员同意,我希望用户自己同意
  • 在企业应用程序中 |用户设置
    • 用户可以同意应用代表他们访问公司数据:是
  • 同意和许可 |用户同意设置 => 允许用户同意应用 - 所有用户都可以同意任何应用访问组织的数据。

授权网址:

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 提供商,登录。不要求用户同意。回调 url 使用code 调用,可以交换为id_token。受众 (aud) 是客户端应用程序的 client_id,而不是 API。

如果我授予管理员同意,code 可以交换为access_tokenid_token,并且观众可以(API 的client_id)。

对于客户端应用程序+范围,我必须配置什么才能让用户同意?我找不到任何关于此的文章:用户同意和外部身份提供者。

【问题讨论】:

    标签: oauth-2.0 azure-active-directory azure-ad-b2c scopes


    【解决方案1】:

    您必须在 AAD B2C 中获得管理员同意。它没有针对用户的 OAuth2.0 同意提示。相反,它以使用条款为模型。除非您与第三方共享您的数据,否则您绝不会做出 Oauth 同意。

    https://github.com/azure-ad-b2c/samples/blob/master/policies/terms-of-service

    同意和许可 |用户同意设置 => 允许用户同意应用 - 所有用户都可以同意任何应用访问组织的数据。

    与 AAD B2C 应用无关。

    如果您仍然想要一些同意用户体验: https://github.com/azure-ad-b2c/samples/tree/master/policies/service-consent

    【讨论】:

    • 感谢 JasSuri 的回答。只是:Irrelevant to AAD B2C apps 表示不应以这种方式管理第三方应用程序(初始描述中的外部客户端),或者不相关,因为它是使用 TOS 建模的,解决方案是实施一些 UX(使用信任框架的策略)?
    • 不相关,因为它根本不适用于 B2C 应用注册,用户与您共享数据,它是第一方。想想你注册的任何网站/应用程序。当您要求用户将来自服务(不归您所有)的数据共享到您的应用程序时,就会模拟 oauth 同意。 EG 通过 google 登录到您的 B2C 应用程序将触发 google 同意。我所知道的任何标准都没有真正涵盖它在面向消费者的应用程序中是否有用或适用。是的,如果您愿意,您可以使用身份体验框架对 UX 进行建模。
    • 好的,所以在我描述的上下文中(仅限 POC),第三方不是我“拥有”的,而是注册为 B2C 应用程序以受益于 AAD OAuth2 服务器功能(+ 你可以插入外部身份提供者)。当我阅读您的 cmets 时,这对我来说是边缘案例或黑客攻击。谢谢贾斯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2021-03-02
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多