私はIdentity Serverを使って認証を管理するMVC Webアプリケーションを持っています。これは正常に動作し、ログインするためにブラウザをIDサーバにリダイレクトしてから、自分のアプリケーションにリダイレクトします。MVCとJS Identity Serverの認証を組み合わせる
しかし、私のアプリケーションはかなりの量のAjaxとJavaScriptコールを使用するため、Ajaxメソッドの1つが呼び出されたときにページがリダイレクトされ、アプリケーションに正しくリダイレクトされないという問題があります。
ドキュメントを見ると、JS Authenticationが私に必要なものを与え、ポップアップまたはiFrameで認証トークンを暗黙的に更新できるように見えます。
ドキュメントごとにoidc-client-jsを使用してアプリケーションをセットアップしましたが、アプリケーションにトークンをサイレントに読み込ませることができず、Ajaxコールがまだ失敗します。
マイoidcクライアントのセットアップコードは、ページのロード上で実行され、次のようになります。
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>
誰もが私の認証トークンはサイレントリダイレクトURIを使用して更新されていない理由を支援することができ、または私は更新の私の問題を解決する方法Ajax呼び出しのトークン。
最後にこれでどこに行ったのですか?私は似たような立場にいます...最終的に私は自分のJavaScriptクライアントが自動的に私のmvcアプリケーションと同時にログインするようにしたいと思います。 –
@PaulHinettいいえ、私は自分のアプリケーションのメインページに自分のクライアントのRedirectUriを設定したので、少なくとも空白の画面には終わっていませんでした。 – Steve