web-dev-qa-db-ja.com

AWSIAMまたはCognitoによるSpringSecurity

私は、RESTfulAPIを提供するSpring4バックエンドWebアプリケーションをいくつか作成しました。私はSpringWebSecurityでこれらを保護することさえできました。

あるケースでは、OpenAmの独自のインスタンスがインストールされています。クライアントUIにアクセスするユーザーは、OpenAMに対してログインでき、クライアントWebアプリはCookieでトークンを取得します。そのトークンをヘッダー内のバックエンドに渡し、Spring SecurityはCustomeUserDetailsS​​erviceを使用してそのトークンをOpenAMと照合し、有効かどうかを確認します。その場合、Spring Securityコンテキストでユーザーを作成し、ロールを割り当ててから、それらのロールがAPIに対して有効かどうかを確認します。そうである場合、APIは実行され、そうでない場合、ユーザーは401セキュリティエラーを受け取ります。これはOAuth2だと思います。

Oktaでもまったく同じことができました。独自のログインページを備えた独自のクライアントWebUIがあります。 UIはOktaを呼び出し、2つのトークンを取得します。これらのトークンを連結し、上記と同じプロセスを実行するバックエンドに渡します。これもOauth2だと思います。

現在、新しいプロジェクトに取り組んでいます。フロントエンドとバックはAWS EC2インスタンスでホストされるため、今回はAWSIAMでウェブアプリケーションを保護したいと思います。

私はこれを行う方法を正確に見つけるためにウェブを精査してきました。 AWS IAM SDKと、AWSCognitoがあります。 IAMを最初に調べたところ、Oauth2はまったく表示されませんでした。OpenIDとSAMLが表示されました。 OpenID、Oauth2、SAMLについての知識が不足していることはわかっています。

そのため、AWSIAMやCognitoを使用してSpringSecurityでバックエンドAPIを保護するのに役立つ、コードベース、サンプルコード、またはドキュメントへのリンクを探しています。ところで、Spring Web Securityがすでにそれを行っているので、Spring APIGatewayを使用したくありません。

助けてくれてありがとう!

7
tjholmes66

わかりました、私はこれについていくつかの独自の調査を行い、AWSサイトからこれを入手しました:

AWS Identity and Access Management(IAM)を使用すると、ユーザーのAWSサービスおよびリソースへのアクセスを安全に制御できます。 IAMを使用すると、AWSユーザーとグループを作成および管理し、パーミッションを使用してAWSリソースへのアクセスを許可および拒否できます。

しかし、私はこれを探していません。私はWebアプリケーションを持っていますが、モバイル側もあるかもしれません。ユーザー管理を記述したり、独自のログインセッションや承認などを処理したりする必要はありません。したがって、この場合は次のようになります。

Amazon Cognitoを使用すると、ユーザーのサインアップとサインインをモバイルアプリとWebアプリに簡単に追加できます。 Amazon Cognitoを使用すると、Facebook、Twitter、AmazonなどのソーシャルIDプロバイダー、SAML IDソリューション、または独自のIDシステムを使用してユーザーを認証するオプションもあります。さらに、Amazon Cognitoを使用すると、ユーザーのデバイスにローカルでデータを保存できるため、デバイスがオフラインの場合でもアプリケーションを動作させることができます。その後、ユーザーのデバイス間でデータを同期して、ユーザーが使用するデバイスに関係なく、アプリのエクスペリエンスの一貫性を保つことができます。

Amazon Cognitoを使用すると、ユーザー管理、認証、デバイス間の同期を処理するソリューションの構築、保護、スケーリングについて心配することなく、優れたアプリエクスペリエンスの作成に集中できます。

つまり、AWSCognitoは...

3
tjholmes66