从ADAL升级到MSAL后,app.UseWindowsAzureActiveDirectoryBearerAuthentication停止工作

时间:2019-06-06 22:43:25

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

我正在使用MSAL进行一些测试,但是很遗憾,它没有按预期工作。

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

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

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

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

使用app.UseWindowsAzureActiveDirectoryBearerAuthentication时使用MSAL仍然有效吗?

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
                new WindowsAzureActiveDirectoryBearerAuthenticationOptions
                {
.
.
.

1 个答案:

答案 0 :(得分:1)

MSAL应该与融合/v2.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/

关于使用应用程序的细节。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/