Я создал приложение для проверки правильности токена.Это приложение представляет собой веб-интерфейс API, который содержит только один контроллер с одной конечной точкой.Контроллер имеет атрибут [Authorize].Если я добавил частичный Startup.cs, который вызывает запуск конфигурации при запуске приложения:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
Также я создал Startup.Auth.cs, который обрабатывает конфигурацию:
public void ConfigureAuth(IAppBuilder app)
{
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = ConfigurationManager.AppSettings["ida:Audience"],
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
ValidIssuer = Configuration Manager. AppSettings["ida:Issuer"]
},
Metadata Adress = Configuration Manager. AppSettings["ida:MetaData"] );
}
Все, что я делаю во внешнем интерфейсе, это вызываю конечную точку и отправляю токен доступа с допустимой аудиторией в заголовке (псевдокод):
... Headers.add("Authorization", "Bearer ey... "
У меня есть 3 этапа на 3 серверах (test, Dev, prod),На тесте и Dev токен распознается как действительный, и конечная точка возвращает сообщение об успехе.При получении я получаю следующую ошибку:
IDX10501: Ошибка проверки подписи.Невозможно сопоставить 'kid': '' 4Wqj ... '
Когда я смотрю на мои jwks из документа обнаружения, я могу проверить, что данный jwk с указанным ребенком существует и соответствуетребенок в маркере доступа.
Все три сервера находятся в одной интрасети.
Я понятия не имею, в чем причина этой ошибки только на сервере prod.