2017-04-21 12 views
2

私は、認証サーバー(AS)、リソースサーバー、および2つのクライアントを持つソリューションを開発しています。 2つのクライアントは、Angular 2のWebアプリケーションとAngular 2 + Ionic 2のモバイルアプリです。このサンプルに続いてAuthorization Serverを開発しました。https://github.com/Baeldung/spring-security-oauthOAuth2パスワードの付与と基本認証

両方のクライアントで、クライアントがASによって信頼されているため、「パスワードコード許可」となります。

しかし、私はアプリに「クライアントの秘密のコード」を保存する際に問題があります。 APIを(.../OAuthの/トークン)基本認証で、私はそのような何かに送信する必要があるとして、私はトークンを尋ねるので、すべての時間を確保しているので:だから

curl.exe -v -u client_id:client_secret http://localhost:8080/backend/oauth/token -d grant_type=password -d client_id=client_id -d username=admin -d password=admin 

を、質問は以下のとおりです。

  1. ここで、クライアントの秘密コードをアプリに安全に保存できるのはどこですか?
  2. oauth APIから基本認証を削除するのは安全ですか?
  3. 別のコード認可タイプを使用しましたか?

ブラウザ(角)で実行している

答えて

0

アプリケーションを安全に彼らの秘密を守ることができないので、私はのOAuth2暗黙の流れを選ぶだろう、 パオロありがとうございました。トークンはネットワークを介して転送されるため、暗黙のフローでは、認可サーバーとの通信にHTTPSを使用する必要があります。

トークンエンドポイントから認証を削除しないでください。他のフロータイプを危険にさらします。たとえば、認可許可フローでは、クライアントをHTTPSで処理する必要はなく、認証コードは誰でも見ることができるため、トークンエンドポイントの秘密が重要です(リソースサーバーはHTTPSを使用してトークンを要求する必要があります)。

暗黙のフローを使用すると、アクセストークンの有効時間を確認し、現在のアクセストークンが期限切れになる前に新しいアクセストークンを要求する必要があります。たとえば、prompt=none認証要求パラメータを使用します。