IdentityServer4 OID C -Клиент авторизовать цикл перенаправления - PullRequest
1 голос
/ 20 февраля 2020

Я создал реализацию IdentityServer4 , включающую ASP Идентичность , работающую ASP. NET Ядро с использованием Implicit Поток . (Мы переходим к конфигурации PKCE позже, но неважно.) Приложение управляет входом пользователей в различные веб-приложения, работающие ASP .NET / AngularJS / OID C -Client . При локальном запуске всего на IIS Express все работает, как задумано. Я могу войти, выйти из системы, тихо refre sh, жизнь хороша. Тем не менее, после развертывания на Azure - я застреваю в бесконечном перенаправлении l oop, пытаясь войти, и я нахожусь в конце моего ума.

Первый вызов Защищенный веб-ресурс перенаправляет меня обратно на сервис входа в систему. Хорошо. После входа в систему меня отправляют на веб-ресурс, как и ожидалось, - но здесь начинается перенаправление l oop.

Из IdentityServer входит Application Insights Я читаю сообщения типа;

  • Client list checked and origin: "https://webapp.net" is allowed.
  • CorsPolicyService allowed origin: "https://webapp.net"
  • Client configuration validation for client "webclient" succeeded.
  • Token validation success

Я вижу, что типы утверждений и информация о пользователе содержат ожидаемые значения, и от GET request до "https://loginservice.net/-well-known/openid-configuration" возвращает OK (с ожидаемыми конфигурациями). Я также проверил, что access и id токены действительны, опять же содержат ожидаемые данные.

Но, POST request до "https://loginservice.net/connect/accesstokenvalidation" по-прежнему не удается с 404.

OID C -Клиент в моем веб-приложении настроен следующим образом:

vm.userManager = new Oidc.UserManager({
    authority: authorityUrl,
    redirect_uri: windowLocation + '/callback.html',
    silent_redirect_uri: windowLocation + '/silent.html',
    post_logout_redirect_uri: windowLocation + '/index.html',
    client_id: 'appsimplicit',
    scope: 'openid profile role appsmanagement',
    response_type: 'id_token token',
    revokeAccessTokenOnSignout: true,
    automaticSilentRenew: true,
    filterProtocolClaims: true,
    checkSessionInterval: 2000
});

Мой обратный вызов. html выглядит так:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <script src="/js/oidc-client.min.js"></script>
    <script>
        new Oidc.UserManager().signinRedirectCallback().then(function(user) {
            window.location = window.location.protocol + "//" + window.location.host + "/";
        }).catch(function(err) {
            console.log(err.message);
        });
    </script>
</body>
</html>

Что я могу сделать, чтобы это исправить? Такое же поведение сохраняется в разных браузерах; Firefox, Chrome, Edge .. Понятия не имею, почему он работает локально, но не развернут на Azure.

...