Я создал реализацию 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.