外部客户可以使用用户名密码通过 Entra 登录吗?

问题描述 投票:0回答:1

我想在 .NET Core Web 应用程序中使用自定义登录表单,用户将在其中提供用户名和密码来登录(获取访问令牌)到 Microsoft Entra 外部身份 租户。我已经看到了为 B2C 提供的 ROPC 流程,但它的局限性对我来说是一个阻碍。如果可能的话,有人可以提供任何建议吗?如何实现?

.net azure-ad-b2c azure-ad-msal microsoft-entra-id
1个回答
1
投票

我同意你的观点,出于安全原因,不建议使用 ROPC 流程。因此,作为解决方法,您必须使用其他用户交互流程,例如授权代码流程。

我创建了一个 Azure AD 应用程序并授予了 API 权限:

enter image description here

为了验证用户身份,我使用了以下端点:

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

根据要求,您可以登录或注册:

enter image description here

用户将被重定向到重定向页面并生成授权码:

enter image description here

我通过 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

enter image description here

授权代码流是通过自定义策略实现的,对吧?我只想使用我自己的自定义登录表单供用户输入用户名和密码。这可能吗?或者使用此流程将向用户显示 Microsoft 的登录表单?

是的,默认情况下使用此流程,它将向用户显示 Microsoft 的登录表单。要自定义登录表单,请参阅我的这个答案

© www.soinside.com 2019 - 2024. All rights reserved.