Authentication 使用Microsoft Identity Platform为MVC控制器和WebAPI(Cookie+;载体)提供不同的身份验证方法

Authentication 使用Microsoft Identity Platform为MVC控制器和WebAPI(Cookie+;载体)提供不同的身份验证方法,authentication,model-view-controller,asp.net-web-api2,bearer-token,microsoft-identity-platform,Authentication,Model View Controller,Asp.net Web Api2,Bearer Token,Microsoft Identity Platform,我有一个实现MVC控制器和webapi控制器的web应用程序。此web应用程序使用基于外部Cookie的Microsoft帐户身份验证 现在,我想使用MSAL从本机(桌面)应用程序查询webapi,以根据Microsoft identity platform对用户进行身份验证 我尝试添加以下代码以使用承载身份验证:app.useWindowsAzureActiveDirectoryBeareAuthentication( 新WindowsAzureActiveDirectoryBeareAuth

我有一个实现MVC控制器和webapi控制器的web应用程序。此web应用程序使用基于外部Cookie的Microsoft帐户身份验证

现在,我想使用MSAL从本机(桌面)应用程序查询webapi,以根据Microsoft identity platform对用户进行身份验证

我尝试添加以下代码以使用承载身份验证:
app.useWindowsAzureActiveDirectoryBeareAuthentication(
新WindowsAzureActiveDirectoryBeareAuthenticationOptions
{
Tenant=ConfigurationManager.AppSettings[“ida:Tenant”],
TokenValidationParameters=新的TokenValidationParameters
{
ValidAudience=ConfigurationManager.AppSettings[“ida:Audience”]
}
});

我可以通过PublicClientApp.AcquireTokenInteractive方法对客户端进行身份验证,并使用生成的AccessToken复合授权标头,但webapp会以401错误代码进行响应

 request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
 var response = httpClient.SendAsync(request).Result;
总之,目标不是同时使用cookie和承载身份验证,而是使用MVC创建一个独特的web应用程序:

  • 可以使用授权机制为网页提供服务
  • 可以使用相同的授权机制发布基于REST的API(通过WebAPI),即:
  • 针对Microsoft Azure AD帐户进行身份验证
  • 可由桌面客户端使用
  • 可能被以前的web应用程序页面用于显示动态内容