Gin*_*ano 17 azure azure-ad-graph-api azure-ad-b2c
我正在寻找一种通过用户名/密码以无头方式为Azure AD b2c验证用户的方法.Azure AD b2c很棒,但我们认为登录的重定向可能导致客户之间的混淆(有时甚至被某些浏览器阻止).此外,我们希望完全控制客户的UX体验.
我研究了ADAL和Graph API,但还没有找到任何东西.
吉娜
如前所述在这里,你可以使用Azure的AD应用程序的客户机凭证流的服务帐户.它不是最佳的,但它的工作原理.
注意:请务必在B2C租户下创建Azure AD应用.
用于从C#获取访问令牌的代码片段
using (var httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri("https://login.microsoftonline.com");
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials")
, new KeyValuePair<string, string>("client_id", "[service account app id e.g. 10d635e5-7615-472f-8200-a81d5c87c0ca")
, new KeyValuePair<string, string>("client_secret", "[client secret defined in the service account e.g. 5L2ZJOBK8GI1wRSgGFooHcBkAOUOj65lQd9DgJxQOrw=]")
, new KeyValuePair<string, string>("scope", "[App ID URI of the web api azure ad app]/.default e.g. https://my-b2c-tenant.onmicrosoft.com/my-azure-ad-ap/.default")
});
var requestResult = await httpClient.PostAsync("/[your b2c tenant].onmicrosoft.com/oauth2/v2.0/token", content);
var contentResult = await requestResult.Content.ReadAsStringAsync();
var json = JObject.Parse(contentResult);
var accessToken = (string)json["access_token"];
}
Run Code Online (Sandbox Code Playgroud)
App ID URI
您可能希望定义一些自定义声明来保护Web API.请参阅此处的"应用程序权限".
修改Web API Azure AD App上的应用程序清单
{
"appRoles": [{
"allowedMemberTypes": [
"Application"
],
"displayName": "Some display nane",
"id": "[create a new guid]",
"isEnabled": true,
"description": "Allow the application to _____ as itself.",
"value": "the-blah-role"
}
]
}
Run Code Online (Sandbox Code Playgroud)将服务帐户Azure AD App权限授予定义的自定义应用程序权限
授予服务帐户的权限将在roles声明中返回:
{
"roles": [
"the-blah-role"
]
}
Run Code Online (Sandbox Code Playgroud)
请upvote 用户语音反馈项目,以使这更容易:)
目前无法在没有交互式用户的情况下运行Azure B2C.虽然我相信它会在某个时刻到达,但目前您无法创建基于B2C的后端应用程序.
根据Azure Active Directory B2C预览:限制和限制
守护进程/服务器端应用程序
包含长时间运行的进程或在没有用户的情况下运行的应用程序也需要一种方法来访问安全资源,例如Web API.这些应用程序可以使用OAuth 2.0客户端凭据流使用应用程序的标识(而不是使用者的委派身份)进行身份验证和获取令牌.此流程尚未在Azure AD B2C预览中提供 - 也就是说,应用程序只能在发生交互式消费者登录流后获取令牌.
| 归档时间: |
|
| 查看次数: |
3566 次 |
| 最近记录: |