我想在 .NET Core Web 应用程序中使用自定义登录表单,用户将在其中提供用户名和密码来登录(获取访问令牌)到 Microsoft Entra 外部身份 租户。我已经看到了为 B2C 提供的 ROPC 流程,但它的局限性对我来说是一个阻碍。如果可能的话,有人可以提供任何建议吗?如何实现?
我同意你的观点,出于安全原因,不建议使用 ROPC 流程。因此,作为解决方法,您必须使用其他用户交互流程,例如授权代码流程。
我创建了一个 Azure AD 应用程序并授予了 API 权限:
为了验证用户身份,我使用了以下端点:
https://b2caadtenant.b2clogin.com/b2caadtenant.onmicrosoft.com/B2C_1_testb2c/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://b2caadtenant.onmicrosoft.com/xxx/test.read.all
&state=12345
根据要求,您可以登录或注册:
用户将被重定向到重定向页面并生成授权码:
我通过 Postman 使用以下参数生成了访问令牌:
https://b2caadtenant.b2clogin.com/b2caadtenant.onmicrosoft.com/B2C_1_testb2c/oauth2/v2.0/token
client_id:ClientID
scope:https://b2caadtenant.onmicrosoft.com/1xxx/test.read.all openid offline_access
grant_type:authorization_code
redirect_uri:https://jwt.ms
client_secret:ClientSecret
code:code
授权代码流是通过自定义策略实现的,对吧?我只想使用我自己的自定义登录表单供用户输入用户名和密码。这可能吗?或者使用此流程将向用户显示 Microsoft 的登录表单?
是的,默认情况下使用此流程,它将向用户显示 Microsoft 的登录表单。要自定义登录表单,请参阅我的这个答案。