私はこのことについて何ヶ月も読んできましたが、私が下に要約していることにすべてが収斂するようでした。私が最も理想的な到着しようとしています:クッキーを使用せずに認証コードを使用する?
- のOAuth2
- OpenIDの接続
- SPA /モバイルクライアント
- JWT上記のように銀行レベルのセキュリティ品質を有する
ソリューションコンポーネントが関係しています。だからこれは意味をなさないと思われるものです。
- このOAuthのフローは、暗黙的な流れよりも安全であるため、サーバー側のセッションとクッキーを使用せずにAuthorization Code Grantを使用してください。
- サーバーサイドのセッションやクッキーを作成しないでください。クライアントが以前に認証されたかどうかを確認するために、クッキーを覚えておいてください。これはスケーリングと全体的な単純化にとってより優れています。
- JWT/OpenID接続トークンをクライアントに返します。これにより、クライアントはAPIを使用してクライアントでAPI要求を行い、クライアント内で認可の決定を行うことができます。 (これは、OAuth2ハイブリッド認証コード許可/暗黙のフローとは何ですか?)クライアントセッションストレージにJWT/OpenID接続トークンを格納します。
- 短命のJWTトークンを使用し、ユーザーがログアウトするまでリフレッシュトークンを提供します。クライアントは、タイムアウト/クライアント側のセッションが満了するか、ユーザーがログアウトしない限り、リフレッシュトークンを自動的に受信します。リフレッシュトークンは、SPA /モバイルアプリケーションが話している/ OAuthクライアントのエッジサーバーによって取得され、処理されます。
- ログアウト(またはタイムアウト)時に、ブラウザのセッションストレージからトークンを削除します。
これは狂った/妥当なものですか?トークンを無効にすることはスキップしますが、トークンの寿命が非常に短く、クライアントがリフレッシュトークンを取得できる場合は、これを行うのがOKです。私はこれをSpring-Boot/Spring SecurityとAngular 4/5を使って実装したいと思います。もし私が何かを見逃したり、セキュリティを低下させないもっと簡単なアプローチがあるのだろうか?
また、これは「バンキング」レベルのセキュリティ基準のチェックに合格すると思いますか?クリアする
まず読む:https://stackoverflow.com/help/how-to-ask しかし、私は使用を推測:認定ライブラリと OpenIDの接続:https://openid.net/certification/ OpenIDの接続 https://openid.net/specs/openid-connect-basic-1_0.html https://openid.net/specs/openid-connect-implicit-1_0.html – jwilleke
うんためのベスト・プラクティスに従ってください私はあなたが「尋ねる方法」のヒントの意味を知っています。私は上記のアプローチで少し「箱の外側を歩いている」ような気がしています。 .. – Ole