如何使用grant_type:password
机制在.net核心Web API中配置Azure AD身份验证并获取访问令牌?无需重新重定向天蓝色门户。
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);
}
答案 0 :(得分:0)
如果您直接将发帖请求发送到令牌端点(如本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以获得代码示例。