如何让 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 上的 AudienceValidatorIssuerValidator 代码,我很容易理解原因 - 该代码比较精确的字符串。我希望代码尊重通配符,这是设计使然还是只是一个错误?任何解决方法?

您可以通过设置 TokenValidationParameters.AudienceValidator 委托来控制受众验证。然后你可以做任何你需要做的事情。