【问题标题】:Authenticate and get Azure AD token in .net core Web API with grant_type as Password在 .net 核心 Web API 中使用 grant_type 作为密码进行身份验证并获取 Azure AD 令牌
【发布时间】:2019-06-10 11:09:22
【问题描述】:

如何使用grant_type:password机制在.ne​​t core Web API中配置Azure AD身份验证并获取访问令牌?无需重新重定向 azure 门户。

public void ConfigureServices(IServiceCollection services) { 
    services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. 
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme) .AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

【问题讨论】:

    标签: asp.net-core azure-active-directory


    【解决方案1】:

    如果您直接将发布请求发送到令牌端点,如thread 所示,这是可能的。

    但资源所有者密码凭据授予不推荐,因为它的安全性低于其他流程(您的应用程序处理凭据),并且与条件访问不兼容。此外,受邀加入 Azure AD 租户的个人帐户不能使用 ROPC。另外,如果用户需要使用多因素身份验证(MFA)登录应用程序,他们将被阻止。

    -------建议方法

    如果场景是用户已经在客户端应用程序上进行了身份验证,并且还获取了访问令牌来访问您的 web api,在 web api 中,您需要调用另一个资源/API,您可以使用 On-Behalf-Of flow 启用调用服务或 Web API 以将用户身份验证传递给另一个服务或 Web API 的应用程序。您可以点击here 获取.Net Core 中的代码示例。

    您还可以使用OAuth 2.0 Client Credentials Grant Flow 允许 Web 服务(机密客户端)使用其自己的凭据而不是模拟用户,在调用另一个 Web 服务时进行身份验证。代码示例可以点击here

    【讨论】:

    • 如何实现 Single .net core Web API 从用户那里获取用户凭据并将其传递给 Azure AD 进行身份验证?基于 Azure 令牌,它必须允许用户访问其他 API。
    • 如何在 web api 应用程序中获取用户的凭证?您将在 web api 中自己创建登录页面?
    • 是的,有没有更好的方法在 Web API 上获取 Azure AD 访问令牌?那个 .net 核心 WEB API 是否记住了其他 Web API 调用的用户令牌?你有什么更好的建议..
    • 在您的场景中,密码流似乎是一种意见,因为您需要用户的身份。
    猜你喜欢
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2020-08-17
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多