无头认证天青AD B2C无头认证天青AD B2C(headless authentication A

2019-05-12 10:58发布

我正在寻找一种方式,为天青AD B2C无头的方式来验证通过的用户名/密码的用户。 Azure的AD B2C是伟大的,但我们觉得对重定向可以登录客户中引起混乱(有时甚至被一些浏览器阻止)。 同时,我们也希望在客户体验UX完全控制。

我已经研究ADAL和图形API,但没有发现任何东西。

吉娜

Answer 1:

它是目前不可能没有交互式用户当前运行Azure的B2C。 虽然我相信它会在某个时候抵达,目前,你不能创建基于B2C后端应用程序。

按照Azure的Active Directory的B2C预览:限制和约束

守护进程/服务器端应用

包含长时间运行的进程或没有用户的情况下,其操作的应用程序也需要一种方式来访问受保护的资源,如Web的API。 这些应用程序可以验证并获得使用OAuth 2.0用户端凭证流使用应用程序的标识(而不是消费者的委托身份)令牌。 这种流动是不是在Azure的AD B2C预览尚未公布- 这是说,应用程序可以发生一个互动的消费者登录流程后,只得到令牌。



Answer 2:

如前所述在这里 ,你可以使用Azure的AD应用程序的客户机凭证流的服务帐户。 这是不是最佳的,但它的工作原理。

  1. 定义一个Azure的AD应用程序的Web API
  2. 限定天青AD应用每服务帐户
  3. 配置Web API,以接受来自您的B2C租客和Azure的AD令牌
    • 假设你有alredy配置B2C您的Web API ...
    • 为天青AD应用的公知的构造网址是https://login.microsoftonline.com/[your-b2c-tenant].onmicrosoft.com/.well-known/openid-configuration
    • 延伸阅读:ASP.NET核心文件: 使用多个身份验证方案
  4. 要求对服务帐户的AD应用程序的访问令牌用于Web API

注意 :确保您的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"];
}

App ID URI


你可能会想定义一些自定义要求(一个或多个)保护Web API。 请参见“应用程序许可”在这里 。

  1. 修改在Web API Azure的AD应用程序的应用程序清单

     { "appRoles": [{ "allowedMemberTypes": [ "Application" ], "displayName": "Some display nane", "id": "[create a new guid]", "isEnabled": true, "description": "Allow the application to _____ as itself.", "value": "some-claim" } ] } 
  2. 授予服务帐户天青AD应用权限定义的自定义应用程序的权限(多个)

授予服务帐户会回来的权限roles要求:

{
  "roles": [
    "some-claim"
  ]
}

请给予好评的用户语音反馈产品,使它更容易些:)



Answer 3:

如果你想要的是无头的认证,你为什么不干脆单独使用Azure的广告? 它有一个API。 如果你打算创建和管理所有的UI自己,为什么你会想要或需要AD B2C?



Answer 4:

Azure的AD B2C不能提供无头的认证,但是结合定制旅程
虚荣域和定制的造型及其用户能够永远不会离开你的网站



Answer 5:

你所寻找的是在蔚蓝的AD B2C OWIN的资源所有者密码凭据 。 你可以参考https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/13817784-add-support-for-resource-owner-password-credential并给予好评 ,为了落实这项功能



Answer 6:

仍然处于预览(如2018年1月),但可能是你在找什么,如果你正在使用Azure的功能。 看看微软图表绑定Azure的功能



文章来源: headless authentication Azure AD b2c