Oauth 2.0 AAD B2C-未征求用户同意

Oauth 2.0 AAD B2C-未征求用户同意,oauth-2.0,azure-active-directory,azure-ad-b2c,scopes,Oauth 2.0,Azure Active Directory,Azure Ad B2c,Scopes,背景: 租户的Azure广告B2C 已配置外部标识提供程序 B2C登录流(登录注册)已配置 API后端定义为此租户的AAD B2C中具有2个作用域的应用程序 “管理员和用户”可以同意 外部客户/第三方应用程序(保密)定义为该承租人在AAD B2C中的应用程序 外部客户端/第三方应用程序对这2个作用域具有权限 状态为“无”,我没有授予管理员同意,我希望用户自己给予同意 在企业应用程序中|用户设置 用户可以同意应用程序代表其访问公司数据:是 在同意和权限|用户同意设置中 =>允许

背景:

  • 租户的Azure广告B2C
  • 已配置外部标识提供程序
  • B2C登录流(登录注册)已配置
  • API后端定义为此租户的AAD B2C中具有2个作用域的应用程序
    • “管理员和用户”可以同意
  • 外部客户/第三方应用程序(保密)定义为该承租人在AAD B2C中的应用程序
  • 外部客户端/第三方应用程序对这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提供程序,登录。不要求用户同意。调用回调url时使用
代码
,可以将其交换为
id\u令牌
。受众(
aud
)是客户端应用程序的
客户端id
,而不是API

如果我授予管理员许可,
code
可以交换为
access\u token
id\u token
,并且观众是正常的(API的
客户端id


对于客户端应用程序+作用域,我必须配置什么以请求用户给予同意?我还没有找到任何关于这方面的文章:用户同意和外部身份提供者。

您必须在AAD B2C中获得管理员同意。它没有针对用户的OAuth2.0同意提示。相反,它是用使用条款建模的。除非您与第三方共享您的数据,否则您永远不会进行Oauth许可

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

与AAD B2C应用程序无关

如果您仍然需要一些许可:
您必须在AAD B2C中获得管理员同意。它没有针对用户的OAuth2.0同意提示。相反,它是用使用条款建模的。除非您与第三方共享您的数据,否则您永远不会进行Oauth许可

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

与AAD B2C应用程序无关

如果您仍然需要一些许可:

谢谢JasSuri的回答。只是:
与AAD B2C应用程序无关
意味着第三方应用程序(初始描述中的外部客户端)不应以这种方式进行管理,或者不相关,因为它是用TOS建模的,解决方案是实施一些UX(具有信任框架的策略)?不相关,因为它根本不适用于B2C应用程序注册,用户与您共享数据,这是第一方。想想你注册的任何网站/应用程序。当您要求用户将数据从服务(不属于您)共享到您的应用程序时,oauth同意是建模的。例如,通过谷歌登录您的B2C应用程序将触发谷歌同意。我所知道的任何标准都没有真正涵盖它在面向消费者的应用程序中是否有用或适用。是的,如果您愿意,您可以使用身份体验框架对UX进行建模。好的,在我描述的上下文中(仅限POC),第三方不是我“拥有”的,而是注册为B2C应用程序,以受益于AAD OAuth2服务器功能(+您可以插入外部身份提供商)。当我读到你的评论时,我觉得这是边缘案例或黑客。谢谢你的回答。只是:
与AAD B2C应用程序无关
意味着第三方应用程序(初始描述中的外部客户端)不应以这种方式进行管理,或者不相关,因为它是用TOS建模的,解决方案是实施一些UX(具有信任框架的策略)?不相关,因为它根本不适用于B2C应用程序注册,用户与您共享数据,这是第一方。想想你注册的任何网站/应用程序。当您要求用户将数据从服务(不属于您)共享到您的应用程序时,oauth同意是建模的。例如,通过谷歌登录您的B2C应用程序将触发谷歌同意。我所知道的任何标准都没有真正涵盖它在面向消费者的应用程序中是否有用或适用。是的,如果您愿意,您可以使用身份体验框架对UX进行建模。好的,在我描述的上下文中(仅限POC),第三方不是我“拥有”的,而是注册为B2C应用程序,以受益于AAD OAuth2服务器功能(+您可以插入外部身份提供商)。当我读到你的评论时,我觉得这是边缘案例或黑客。谢谢,贾斯。