【发布时间】:2021-03-02 15:49:10
【问题描述】:
我有一个 asp.net azure web api 站点,比如 myapi.azuresites.net,我的自定义域是 myapi.mycompany.net。 在我的 web api 中,我使用 owin 中间件来验证传入的令牌
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = Constants.AzureActiveDirectoryTenant,
TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = true,
// These values will be checked against what is received in the access token.
ValidAudiences = Constants.AzureActiveDirectoryValidAudiences
},
Provider = new OAuthBearerAuthenticationProviderEx()
});
我在 azure AD 下注册了一个应用,并在其中添加了一些客户端密码。
-
从邮递员那里,我可以从 Azure AD 获得一个带有 App id 和客户端密码的 oauth2 令牌。
-
我将此令牌包含在标头中并发送到我的 azure web api。
-
我的代码使用 owin 中间件来验证令牌
-
如果我将请求发送到 myapi.mycompany.net,则令牌验证有效。
-
如果我将请求发送到 myapi.azuresites.net,令牌验证将失败。
我真的不明白为什么直接调用 azure 站点时令牌验证失败。如果我将 azure 站点的 web.config 抓取到我的本地机器上,它也可以在那里工作。 我怀疑我的 AD 应用没有正确的重定向 URL,但经过验证并没有发现明显的问题。
那么有没有办法记录一些关于身份验证失败原因的信息?由于它是一个远程 azure 站点,我可以将此故障作为异常捕获并抛出一些吗?
【问题讨论】:
-
太奇怪了,我想出了一种方法来添加一些日志,但是验证就成功了
-
您可以将修改后的内容作为答案发送,这样可以帮助更多遇到类似问题的论坛用户。
-
好的,我发布了我现在发现的内容
标签: azure-web-app-service owin owin-middleware