【问题标题】:app.UseWindowsAzureActiveDirectoryBearerAuthentication stopped working after upgrade from ADAL to MSALapp.UseWindowsAzureActiveDirectoryBearerAuthentication 在从 ADAL 升级到 MSAL 后停止工作
【发布时间】:2019-06-06 22:43:25
【问题描述】:

我正在使用 MSAL 运行一些测试,但不幸的是它没有按预期工作。

我已经为带有ADAL 和 ADAL Angular 的 ASP.NET MVC (.net 4.6) + Angular 1.6 SPA 应用程序进行了所有配置。一切正常,但后来我决定尝试MSAL

Startup.Auth.cs 中我配置的提供商的OnValidateIdentity 处理程序被ADAL 正确命中,我可以添加其他声明:

Provider = new OAuthBearerAuthenticationProvider
                    {
                        OnValidateIdentity = async context =>
                        {

现在我将 Angular JS 更改为 MSAL,我得到了 ID TokenAccess Token,但我的 OnValidateIdentity 处理程序不再被击中。

在使用MSAL 时,使用app.UseWindowsAzureActiveDirectoryBearerAuthentication 是否仍然有效?

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
                new WindowsAzureActiveDirectoryBearerAuthenticationOptions
                {
.
.
.

【问题讨论】:

  • 嘿 Leniel,你有什么样的 Azure AD 设置? MSAL 旨在与融合/v2.0 应用程序注册一起使用,而 ADAL 通常与 v1.0 应用程序注册一起使用。您突然切换到 MSAL 是有原因的吗?
  • 嘿弗兰克...我正在使用在 Azure 门户中注册的 B2B AD 目录应用程序。我是否需要使用新的门户\注册应用程序的方式为 v2.0 注册它?原因是尝试新功能,因为我猜这将成为标准的前进方式......
  • @Frank:我的意思是使用这个新的应用注册门户:apps.dev.microsoft.com 如果我在那里注册,我的代码仍然可以在Startup.Auth.cs 中工作吗?
  • Leniel,您是如何更新到 MSAL 的?您是否创建了一个新项目,复制了您的原始项目,然后更改了哪些不同之处?还是您在原始工作项目的基础上进行了更改?
  • 确保您已经在项目中安装了 Microsoft.Owin.Host.SystemWeb 包。 IIS 托管应用程序中的启动检测需要此包。

标签: angularjs azure-active-directory single-page-application adal msal


【解决方案1】:

MSAL 用于融合/v​​2.0 应用程序注册,而 ADAL 通常用于 v1.0 应用程序注册,

如果您尝试迁移到 v2 终结点,则应使用 portal.azure.com 中的新门户创建一个新应用程序。除此之外,这些文档还创建了一个 v2.0 应用注册:https://docs.microsoft.com/en-us/graph/auth-register-app-v2

有关从 v1 迁移到 v2 端点的更多信息,请参阅此资源。 https://azure.microsoft.com/en-gb/resources/samples/active-directory-dotnet-v1-to-v2/

关于使用 app.UseWindowsAzureActiveDirectoryBearerAuthentication 的细节

// 注意:通常 WindowsAzureActiveDirectoryBearerAuthenticaitonMiddleware 使用一个 // v2.0 端点不支持的元数据端点。相反,这 // OpenIdConenctCachingSecurityTokenProvider 可用于获取和使用 OpenIdConnect // 元数据文档。

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
    AccessTokenFormat = new JwtFormat(tvps, new OpenIdConnectCachingSecurityTokenProvider("https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration")),
});

这是从 startup.cs 中引用的:https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet/blob/a69a4cb41e821f0ea8dddc937ea401a03e2f49fe/TodoListService/App_Start/Startup.Auth.cs

可以在此处找到更多关于 v1/v2 示例应用程序比较的好读物:https://simonlamb.codes/2017/02/27/net332-introduction-to-authentication-on-azure-active-directory/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多