2017-06-27 15 views
0

だから、モバイルクライアントからのOAuth2の私の理解は次のとおりです。OAuth2では、モバイルクライアントから認証コードまたはトークンをサービスに送信する必要がありますか?

  1. モバイルクライアントが
  2. リソースホルダーが戻っauth_code
  3. auth_codeaccess_tokenと交換される応答クライアントIDを使用してユーザー認証を取得するためにページをリダイレクトしますrefresh_token

上記の場合、モバイルアプリをサポートするウェブサービスがある場合は、access_tokenrefresh_tokenが含まれているため、ユーザーのアクセス権を取り消されていない限り、引き続きユーザーのデータにアクセスできます。

私が持っていた質問は、auth_codeをサービスに送ってトークンを交換する必要がありますか?または、クライアントがauth_codeを交換し、結果のトークンをサービスに送信する必要がありますか?それは問題ではないのでしょうか、あるいは異なる実装で異なるのでしょうか?私はクライアントの秘密がサービスにのみ保存されていると仮定しています。refresh_tokenを新しいaccess_tokenに交換する必要がありますが、auth_codeについてはわかりませんでした。

答えて

1

認証コードを使用してトークンを要求するときにもクライアントシークレットが必要です。

クライアントはトークンを直接要求することも、サービスに委譲することもできます。どちらか一方を実行する必要があるという厳しい規則はありません。

サービスがトークンを使用するとすれば、おそらくサービスに委任するのが最も理にかなっていると思います。そのため、トークンはそこにとどまります。クライアントがトークンを使用する場合、両方のアプローチが有効です。

+0

ああ、クライアントの秘密を秘密にすることはセキュリティ上のリスクではないでしょうか?私の理解は、アプリケーションのパスワードのようなものであり、あなたがあなたであることを証明します。 – Rollie

+0

はい、クライアント内部にクライアントシークレットを格納することはセキュリティ上のリスクです。なぜなら、そこからクライアントを抽出できないようにすることはできないからです。しかし、クライアントシークレットをサービスに保存すると、クライアントはそれを要求して - クライアントとサービスの間の通信が暗号化されている限り(それはどんな場合でも)セキュリティは問題ありません – MiMo

関連する問題