2017-12-19 9 views
0

IdentityServer 4とAngular 5.0でasp.netコア2.0を使用しています。callback/redirect_urlをクライエント側のルートにルーティングして再帰呼び出しを行う

私のプロジェクトは、このサンプルに基づいています。

https://github.com/scottbrady91/Angular4-OidcClientJs-Example

ユーザーが、彼は決定権限のコールバックにリダイレクトされます成功しに記録された場合。

{ 
    path: 'auth-callback', 
    component: AuthCallbackComponent, 
    }, 

これまでのところ、すべての作品:クライアント側のルートが呼び出されるスコットBrady`sサンプルで

しかし...私の実際のアプリケーションは、経路を保護するだけです。

だから、私は上記のサンプルを変更:

{ 
     path: 'auth-callback', 
     component: AuthCallbackComponent, 
     **canActivate: [AuthGuardService]** 
     }, 

NOW Iは、AUTH-コールバックとバックサーバーサイドのauthorizeエンドポイントへのサーバーサイドのauthorizeエンドポイントからの再帰リダイレクションを得ます。

すべてがすぐにソースファイルの周りにジャンプされているので、私も、ブラウザでそれをデバッグすることはできません

...

  1. のように見えることになってのauth-コールバックROUTEは何ですか?保護されていなければなりませんか?私が言ったように私はルートだけを保護しました。
  2. 再帰が停止するScott Bradyのサンプルで修正する必要があるのは何ですか?

私はauth.guard.ts.isLoggedIn()関数がトリガされた後auth.aervice.tsのユーザフィールドがヌルであることが判明したが、その呼び出しは、ユーザーのためにnullを返し、なぜ私にはわかりません。そのnullユーザーの問題は、以前のauth-callbackの問題です。

答えて

0

私はjavascriptクライアントで作業したことがないので、私は設定を手伝うことができません。しかし、私はあなたがこれを解決するのを手伝うことができるかもしれないと思う。

あなたが推測したように、すべてのルートが保護されています。しかし、ユーザーがまだログインしていないため、一部のパスを保護することはできません。ログインページと同様に、auth-callbackパスとアクセス拒否パス。

auth-callbackパスに到達できないため、ユーザーはまだ認証されていないため、ユーザーはデフォルトのAccessDeniedページにリダイレクトされます。私はこれが/Account/AccessDeniedだと信じています。保護されていて、再度身元確認に挑戦するなど

/Account/AccessDeniedパスとauth-callbackパスへの匿名アクセスを許可すると問題は解決すると思います。

最初は実際にユーザーにサインインし、2番目は再帰を停止します。

/Account/AccessDeniedコードでは、対応方法を決定できます。申し立てがない場合は、認証されたユーザーもここに移動することができます。ユーザーは認証されていますが、管理者ではありません。または、ユーザーは認証されていますが、このWebサイトに対する申し立てはありません。

+0

私はすでにそれを感謝した!/Accountとは関係ありません。リダイレクトuri =>/signin-oidcを保護しないようにして、SigninOidcComponent内のuserManager.completeAuthentication.then(router.navigate(/ urltowhichIwantedbefore);) – Elisabeth

関連する問題