如何让 WindowsAzureActiveDirectoryBearerAuthenticationOptions 接受带星号的观众
How can I get WindowsAzureActiveDirectoryBearerAuthenticationOptions to accept an audience with an asterisk
我的 Azure Active Directory 应用程序 URI 包含一个星号,类似于 https://*.mywebapp.com"
。
AAD 可以成功获取此应用的 https://test.mywebapp.com
资源的令牌。
在服务端,我使用 OWIN 和 WindowsAzureActiveDirectoryBearerAuthenticationOptions
来验证令牌。
问题是不支持使用星号指定受众。
使用以下代码,对于受众为 https://test.mywebapp.com
的令牌,令牌验证 returns 为 false
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = c_azureActiveDirectoryTenant,
TokenValidationParameters = new TokenValidationParameters
{
ValidAudiences = new[] { "https://*.mywebapp.com" },
SaveSigninToken = true,
},
});
查看 GitHub 上的 AudienceValidator
和 IssuerValidator
代码,我很容易理解原因 - 该代码比较精确的字符串。我希望代码尊重通配符,这是设计使然还是只是一个错误?任何解决方法?
您可以通过设置 TokenValidationParameters.AudienceValidator 委托来控制受众验证。然后你可以做任何你需要做的事情。
我的 Azure Active Directory 应用程序 URI 包含一个星号,类似于 https://*.mywebapp.com"
。
AAD 可以成功获取此应用的 https://test.mywebapp.com
资源的令牌。
在服务端,我使用 OWIN 和 WindowsAzureActiveDirectoryBearerAuthenticationOptions
来验证令牌。
问题是不支持使用星号指定受众。
使用以下代码,对于受众为 https://test.mywebapp.com
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = c_azureActiveDirectoryTenant,
TokenValidationParameters = new TokenValidationParameters
{
ValidAudiences = new[] { "https://*.mywebapp.com" },
SaveSigninToken = true,
},
});
查看 GitHub 上的 AudienceValidator
和 IssuerValidator
代码,我很容易理解原因 - 该代码比较精确的字符串。我希望代码尊重通配符,这是设计使然还是只是一个错误?任何解决方法?
您可以通过设置 TokenValidationParameters.AudienceValidator 委托来控制受众验证。然后你可以做任何你需要做的事情。