2016-06-02 5 views
1

私のプロジェクトでOpenId Connect for SSOを実装しようとしています。しかし、私は、リソースサーバ側でOpenId JWTトークンを検証してステートレスにしたい場合に少し苦労しています。ユーザーがログアウトしようとすると、認可サーバーはユーザーのログアウトを知ります(したがって、OpenId Connectセッション管理の仕様)。しかし、認可サーバーはユーザーのトークンがもう有効ではないことをResource Serverにどのように伝えるべきですか?ログアウト後にユーザーがOpenIdトークンを使用してリソースサーバーにアクセスしてアクセスする場合です。それは不思議で、私はインターネット上で解決策を見つけることができませんでした。セントラルログアウトでステートレスセキュリティを整理する手助けをしてください。OpenIdステートレスSSOのログアウト接続

+0

私は2つの関連するトピックを見つけました:http://stackoverflow.com/questions/27355808/openid-connect-with-stateless-jwt-tokensおよびhttp://stackoverflow.com/questions/32533285/openid-connection- session-management-can-id-token-be-be-revokedですが、私の質問には答えられません。 – Alex

+0

id_tokenまたはアクセストークンは短期間である必要があります。すでに見つかった答えは次のとおりです。http://stackoverflow.com/a/32536038/676335 短命のaccess_tokenを使用すると、更新するためにrefresh_tokenを使用してプロジェクトを呼び出す必要があります。認証サーバーはログアウトしたユーザーに新しいaccess_tokenを与えることを拒否することができます。 – fiddur

+0

ありがとうございます。残念なことに、それは暗黙のフローです(依存パーティーはAngularJSアプリケーションです)。したがって、OpenId Connect仕様に準拠します。このフローでは、リフレッシュトークンは安全でないため、使用しないでください。そのため、この問題をカバーする答えはありません。何か案は? – Alex

答えて

0

エンドポイントToken Introspectionを使用して、渡されたアクセストークンが有効かどうかを判断できます。リソースサーバーは、OPのイントロスペクションエンドポイントを呼び出して、リソースにアクセスする前にトークンを検証できます。効果的にトークンを検証するために、リソースサーバが必要です。

  • はOPで登録されたクライアントうと、それに渡されるスコープと
  • を検証するためにSPAアプリ(暗黙の流れアプリ)と同様の/同じスコープを持っていますイントロスペクションエンドポイントにアクセスすることができます。

詳細については、上記のリンクされた仕様の詳細を参照してください。

P.S.先に書いたanswerには、他の関連する参考文献がいくつかあります。

+0

ありがとう、それは私の "プランB"です。しかし、トークンイントロスペクションエンドポイントで自分のトークンをチェックし始めると、発行されたトークンに関する情報を1つの中央場所に保存する必要があります。システムはステートフルになりますが、ステートレスではありません。このシステムをスケーラブルにするために、私はエスケープしたいユーザーセッションを共有する必要があります。さらに、Relaying Party(RP)からResource Server(RS)への各要求に対して、RSはトラフィックに大幅な影響を与える別の要求をOPに送信する必要があります。あなたの考えはシステムをステートフルにすることですが、私はJWTバリデーションや別のアプローチを使ってステートレスにしたいと考えています。 – Alex

+0

紳士、どんなアイデア? SSOをステートレスにすることは可能ですか? – Alex

+0

私はここであなたの要件を誤解しているかもしれません。しかし、あなたのシナリオでは、ステートレストークンとしてJWTアクセストークンを使用することはできませんか?このリンク - http://nordicapis.com/how-to-control-user-identity-within-microservices/には、ステートレストークン交換に関する情報があります。それが助けてくれることを願う – Karthik

関連する問題