System.InvalidOperationException: IDX20803 при проверке Azure AD токена - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть клиент SPA в Angular, который успешно входит в Azure AD и генерирует токен, который я затем передаю его. Net Core (3.0) API через Authorization: Bearer ${token} Затем я пытаюсь проверить токен с [Authorize], чтобы проверить и затем разрешить доступ к вызовам REST Api, мы все еще используем "ver": "1.0", и в заголовке JWT нет одноразового номера. У меня есть код ниже в методе ConfigureServices:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
               .AddJwtBearer(options =>
               {
                   options.Authority = "https://login.microsoftonline.com/common";
                   options.RequireHttpsMetadata = false;
                   options.TokenValidationParameters = new TokenValidationParameters
                   {
                       ValidateIssuer = true,
                       ValidIssuer = options.Authority,
                       ValidateLifetime = true,
                       ValidateAudience = true,
                       ValidAudience = "{myClientID}",
                       IssuerValidator = (issuer, token, parameter) => "https://sts.windows.net/{MyIssuer}/"
                   };
               });

            services.AddAuthorization(options =>
            {
                options.DefaultPolicy =
                     new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
                    .RequireAuthenticatedUser()
                    .Build();
            });

Когда я запускаю проект с помощью locahost, он работает нормально, но при развертывании кода на сервере я получаю следующее сообщение об ошибке:

Exception occurred while processing message.

Exception: 
System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'https://login.microsoftonline.com/common/.well-known/openid-configuration'.
 ---> System.IO.IOException: IDX20804: Unable to retrieve document from: 'https://login.microsoftonline.com/common/.well-known/openid-configuration'.
 ---> System.Net.Http.HttpRequestException: No connection could be made because the target machine actively refused it.
 ---> System.Net.Sockets.SocketException (10061): No connection could be made because the target machine actively refused it.
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---

Приведенное выше сообщение указывает, что что-то не позволяет мне подключиться к сайту для проверки, правильны ли мои параметры? Я использовал jwt.io для проверки токена, и он говорит, что подпись действительна, и на теле я вижу значения, которые ожидаю для "aud:","iss:" "amr":["pwd"] et c. Я новичок в Azure AD и проверке токенов, поэтому, пожалуйста, потерпите меня. Есть ли что-то, что я пропускаю? Спасибо

1 Ответ

0 голосов
/ 18 февраля 2020

Эта ошибка вызвана тем, что приложение не может подключиться к конечной точке метаданных AD Azure. Он должен загрузить конфигурацию оттуда с самого начала, включая ключи publi c, которые приложение может использовать для проверки подписи токенов.

Либо что-то блокирует соединение (например, брандмауэр), либо Azure AD вниз (крайне маловероятно).

...