我有一个asp.net azure web api网站,说myapi.azuresites.net,我的自定义域名是myapi.mycompany.net。在我的web api中,我使用自己的中间件来验证传入令牌
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下注册了一个应用程序,并在其中添加了一些客户端秘密。
从邮差,我可以得到一个oauth2令牌从Azure AD与应用程序id和客户端秘密。
我在标头中包含了这个令牌并发送到我的azure web api。
我的代码使用自己的中间件来验证令牌
如果我将请求发送到myapi.mycompany.net,令牌验证工作。
如果我将请求发送到myapi.azuresites.net,令牌验证失败。
我真的不明白为什么直接调用azure站点时令牌验证失败。如果我抓取azure站点的web。配置到我的本地机器,它也可以在那里工作。我怀疑我的广告应用程序没有正确的重定向url,但经过验证,并没有发现明显的问题。
那么是否有一种方法可以记录一些关于身份验证失败的信息?由于这是一个远程azure站点,我能否将此故障捕获为异常并抛出一些异常?
虽然不确定为什么我的AD身份验证现在工作,我确实找到了一种方法来记录自己的azure站点失败。基本上这将记录自己的信息
<system.diagnostics>
<trace autoflush="true"/>
<sources>
<source name="Microsoft.Owin">
<listeners>
<add name="KatanaListener"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="KatanaListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="d:homelogfilesKatana.trace.log"
traceOutputOptions="ProcessId, DateTime"/>
</sharedListeners>
<switches>
<add name="Microsoft.Owin" value="Verbose"/>
</switches>
</system.diagnostics>