azure - 如何向 Azure 上基于 "Resource Owner Password Credentials"B2C 的应用程序注册添加 secret

标签 azure authentication oauth-2.0 azure-ad-b2c

我在 Azure 上有一个应用程序注册,用于使用 ROPC 流对请求进行身份验证,以便我们可以模仿真实的用户访问 token 并测试我们的 API。这是有效的,但为了使其更安全,我们希望能够在请求中指定一个 secret 。

这不是 ROPC 的默认设置,因为它不打算与 secret 一起使用(注意 - 我们不能在我们正在进行的这部分测试中使用客户端凭据)。

应用程序注册与 B2C 用户流程设置一起使用。我不认为这与这个问题太相关,但我可能是错的。

目前工作电话如下 -

enter image description here

在 Azure 上要允许 ROPC 流,您需要将应用程序设置为允许公共(public)流。

enter image description here

我相信此设置会阻止请求中需要任何形式的客户端 key 或证书。

微软文档似乎建议可以向 ROPC 调用添加 secret 并使它们成为必需的,但在将上述“公共(public)”azure 设置设置为 true 时,我无法找到实现此目的的方法。关闭后,您会收到一条错误消息,指出资源所有者流由于是私有(private)的而不允许。

enter image description here

这是 Microsoft 文档的一部分 - https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth-ropc这似乎表明您可以将应用程序设为私有(private),我只是不知道如何在允许流程的情况下实现。

最佳答案

这个link您提到的是关于Azure AD,而不是Azure AD B2C。因此有两种方法可以获取不同格式的访问 token 。另外,您使用authorization code flow更加安全。在 Azure Active Directory B2C 中。

<小时/>

其中一个正在关注AAD Docs对于您的 AAD B2C 目录,请参阅 explanation 。注:scope不支持application-id,与API Permissions中的权限有关。

POST https://login.microsoftonline.com/{b2c-tenant-name}.onmicrosoft.com/oauth2/v2.0/token
client_id={b2c-application-id}
&scope=openid offline_access
&username={username}
&password={password}
&grant_type=password
&client_secret={client_secret, if your app is not a public client}

enter image description here

<小时/>

[推荐]另一个是testing ROPC flow在 Azure AD B2C 中。 client_secret不在参数中,所以无论是否公开都不需要。

https://{b2c-tenant-name}.b2clogin.com/{b2c-tenant-name}.onmicrosoft.com/{B2C_1_ROPC_Auth, name of ROPC flow}/oauth2/v2.0/token

username={username}
&password={password}
&grant_type=password
&scope=openid offline_access {b2c-application-id}
&client_id={b2c-application-id}
&response_type=token id_token

enter image description here

关于azure - 如何向 Azure 上基于 "Resource Owner Password Credentials"B2C 的应用程序注册添加 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66258839/

相关文章:

angularjs - Ionic + AngularJs + 基于 token 的身份验证

oauth-2.0 - 谷歌开发者控制台,不同用户的不同同意屏幕设置

javascript - 如何从黑莓手机访问 Google Analytics?

azure - 如何关闭 Office365 Exchange Powershell 连接

python - Microsoft Azure情感API返回[ "statusCode": 404, "message": "Resource not found"]错误

security - 质询-响应协议(protocol)如何帮助抵御中间人攻击?

authentication - Spring-security/Grails 应用程序 - 未调用自定义 WebSecurity 配置

node.js - 为什么 babel 将 .babel.json 存储在 USERPROFILE 路径中

azure - Azure ARM 模板上的 Visual Studio Code 报告无法加载架构 - 文件意外结束

Spring认证执行两次,先成功后失败