2016-08-25 3 views
0

私は、Restful Webサービスを使用して互いに通信している複数のWebベースのアプリケーションを用意しています。アプリケーション間の通信は安全ではありません(認証/許可が実装されていません)。複数のWebアプリケーション用のSpringセキュリティベースのSSO

他のすべてのアプリケーションの認証サーバーとして動作する新しいアプリケーションを作成します。つまり、アプリケーションに送信される要求はすべて、認証サーバーによって最初に認証され、認証が成功した後、サーバーはトークンさらなる通信を要求するためにクッキーを添付してください。

私はSpringセキュリティを使用して認証サーバを実装することを検討しています。

また、認証サーバーとやりとりするために他のアプリケーションと統合されるスプリングセキュリティを使用してクライアントを作成したいと考えています。

これを行うには?

以下は、認証とセッション管理が異なる問題であるということです、そしてあなたがシステムを設計しながら、この点を考慮に入れたいと思うでしょう、問題文の enter image description here

答えて

2

一つ注意すべき重要なことの概略図です。

認証は、「あなたは誰ですか、あなたは誰ですか」と答えることから構成されています。これは通常、ユーザーが持っているもの(秘密鍵のようなもの)、ユーザーが知っているもの(パスワードのようなもの)、またはユーザーのもの(指紋のようなもの)のいずれかによって行われます。

セッション管理は異なる質問です。ユーザを認証したら、その認証済みのアイデンティティを時間の経過とともに複数のコールにバインドする必要があります。 SSHのようなものは、プロトコルに組み込まれています。しかし、HTTPはステートレスなので、このアイデンティティーを時間の経過と共に追跡する何らかのソート状態(クッキーなど)を作成する必要があります。

生の認証サーバーの場合は、OpenId Connect Protocolを調べるとよいでしょう。基本的には、アイデンティティを扱うためのOAuthの拡張です。また、OWASP Authentication Cheat Sheetも必ずお読みください。

セッション管理の場合、OWASP Session Management Cheat Sheetは有用なリソースです。

1

SSOは、CAS、SAML、OpenID Connect、さらにはOAuthのプロトコルでも処理できます。

私は(例:https://www.apereo.org/projects/cashttps://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server..)のことを行うための新しいアプリケーションを作成するのではなく、既存の実装を選択し、それを適切に設定しないでしょう

アプリケーションの相互作用にUIの対話やアプリケーションを持って考えると、OpenIDの接続は、この優れたプレゼンテーションをご覧ください:https://vimeo.com/113604459

およびspring-security-pac4jは、これらのすべてのプロトコルで動作します。

関連する問題