实施基本策略认证

时间:2021-01-07 11:55:23

标签: azure-ad-b2c

我可以使用 Azure AD B2C 在我的 API 中实施基本策略身份验证吗? 我浏览了互联网,但没有关于此政策的文档。 我将要实现的场景是:

我想使用 Azure AD B2C 保护一个 API。 客户可以使用提供的用户和密码调用 API 并获取他们的数据

2 个答案:

答案 0 :(得分:0)

B2C 的整体理念是用户不会与您的 API 共享密码。相反,他们转到 B2C(交互式或非交互式方式)并获得令牌。他们使用此令牌调用您的 API,而您的 API 会验证此令牌。但是,如果您仍然认为这是构建应用程序的唯一方法,那么您可以从后端使用“使用资源所有者密码凭据登录 (ROPC )”。

为了使这项工作,您必须设置 B2C,创建此策略,然后将其与类似于此 (C#) 的代码一起使用:

var client = new RestClient("https://yourtenant.b2clogin.com/yourtenant.onmicrosoft.com/B2C_1_ropc/oauth2/v2.0/token");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData = true;
request.AddParameter("username", "YOUR_USERNAME");
request.AddParameter("password", "YOUR_PASSWORD");
request.AddParameter("grant_type", "password");
request.AddParameter("scope", "openid offline_access https://yourtenant.onmicrosoft.com/your_app_name/user_impersonation");
request.AddParameter("client_id", "YOUR_CLIENT_ID");
request.AddParameter("response_type", "token id_token");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

其中 B2C_1_ropc 是您创建的策略名称

答案 1 :(得分:0)

@Georgy Grigoryev 提供的思路是正确的,但需要补充更详细的操作流程:

根据你的问题:你要暴露Azure保护的api,然后登录用户,调用api获取他们的数据。

需要在Azure AD B2C门户中创建2个应用,一个代表客户端应用,一个代表api应用,然后使用用户登录客户端应用,使用客户端应用访问api申请。

首先需要暴露后端应用的api:

enter image description here

接下来,将api应用暴露的scope添加到客户端应用中(可以在我的API中找到你暴露的api权限),这样客户端就可以访问api了,然后授予管理员同意许可。

enter image description here

最后,您需要创建一个 resource owner user flow 并登录用户以获取访问令牌。

enter image description here