3

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

现在,我想使用 MSAL 从本机(桌面)应用程序查询 webapi,以针对 Microsoft 标识平台对用户进行身份验证。

我尝试添加以下代码以使用不记名身份验证来执行此操作:app.UseWindowsAzureActiveDirectoryBearerAuthentication( new WindowsAzureActiveDirectoryBearerAuthenticationOptions { Tenant = ConfigurationManager.AppSettings["ida:Tenant"], TokenValidationParameters = new TokenValidationParameters { ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] } });

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

 request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
 var response = httpClient.SendAsync(request).Result;

总之,目标不是同时使用 cookie 和承载身份验证,而是使用 MVC 拥有一个独特的 Web 应用程序:

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

0 回答 0