1

У меня есть веб-приложение MVC, которое использует Identity Server для управления аутентификацией. Это отлично работает, перенаправление браузера на сервер идентификации для входа в систему, а затем перенаправление обратно в мое приложение.Объединение проверки подлинности сервера MVC и JS

Однако, поскольку мое приложение использует достаточное количество вызовов Ajax и javascript, у меня есть проблема, когда страница будет пытаться перенаправить при вызове одного из методов Ajax и не будет перенаправляться обратно в приложение правильно.

Посмотрите на документацию, похоже, что JS Authentication предоставит мне то, что я хочу, позволяя мне тихо обновлять токен аутентификации либо всплывающим окном, либо iFrame.

Я установил свое приложение в соответствии с документацией, используя oidc-client-js, но я не могу заставить мое приложение тихо перезагружать токен, и мои вызовы Ajax все еще терпят неудачу.

Моего РСИНА код клиент установка запускается при загрузке страницы и выглядит следующим образом:

var settings = { 
    authority: 'http://localhost:8000/identity', 
    client_id: 'client', 
    popup_redirect_uri: 'http://localhost:8000/popup.html', 
    automaticSilentRenew: true, 
    silent_redirect_uri: 'http://localhost:8000/silentrenew.html', 

    response_type: 'id_token token', 
    scope: 'openid profile email api', 
    filter_protocol_claims: true 
}; 

var mgr = new Oidc.UserManager(settings); 

клиент настроен с гибридным потоком и установками, чтобы редирект из popup.html и silentrenew.html файлов.

Popup.html

<html> 
<head> 
    <title></title> 
    <meta charset="utf-8" /> 
</head> 
<body> 
<script src="/js/oidc-client.min.js"></script> 
    <script> 
     Oidc.Log.logger = console; 
     Oidc.Log.logLevel = Oidc.Log.INFO; 
     new Oidc.UserManager().signinPopupCallback(); 
    </script> 
</body> 
</html> 

Silentrenew.html

<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <script src="/js/oidc-client.min.js"></script> 
    <script> 
     Oidc.Log.logger = console; 
     Oidc.Log.logLevel = Oidc.Log.INFO; 
     new Oidc.UserManager().signinSilentCallback(); 
    </script> 
</body> 
</html> 

Может кто-нибудь помочь в том, почему мой маркер аутентификации не возобновлять с помощью беззвучного перенаправлять Ури, или как я могу решить мою проблему возобновления токен на вызов Ajax.

+1

Вы попали куда-нибудь с этим в конце? Я вхожу в аналогичную позицию ... в конечном счете, мне бы хотелось, чтобы мой javascript-клиент автоматически регистрировался одновременно с моим приложением mvc. –

+0

@PaulHinett нет, я закончил настройку RedirectUri моего клиента на главную страницу моего приложения, чтобы я, по крайней мере, не попал на пустой экран. – Steve

ответ

0

Ваш первый фрагмент кода загружает клиент UserManager, но он не пытается загрузить пользователя. Вероятно, вы увидите записи журнала, подтверждающие это.

Так что теперь вам нужна логика, чтобы определить, как войти пользователь после строки

var mgr = new Oidc.UserManager(settings);

В моем приложении я уже проверка подлинность пользователя на OP так idsrv и idsrv.session печенья уже существовать. В моем случае я могу позвонить mgr.signinSilent();, и это увеличит и восстановит sessionStorage для пользователя, а также запустит логику автозапуска (мой код для silentRenew.html идентичен).

Если у вас нет сеанса, вы можете использовать либо mgr.signinRedirect(), либо mgr.signinPopup() в зависимости от того, что подходит вашему приложению. Эти методы и еще несколько деталей доступны. on the github wiki

Смежные вопросы