web-dev-qa-db-ja.com

モバイルアプリはPKCEでどの程度正確に認証コードフローを実現しますか?

以下を想像してみましょう:

  1. Xamarinを使用してモバイルアプリを開発しました(iOS/Android互換)
  2. OAuth2 + OpenID接続の認証コードフローとPKCEをサポートして、ユーザーの資格情報がデバイスに保存されるのではなく、アクセストークンがサポートされるようにしたいと考えています。トークンは、モバイルアプリ全体を機能させるために使用されるAPIへのアクセスを許可します。つまり、モバイルアプリは単なるフロントエンドインターフェイス/ UIです。
  3. 私のモバイルアプリは「クライアントアプリケーション」または「リソース所有者」と見なされますか?

3番目のステップでは、これを理解するのが非常に困難になります。それがクライアントアプリケーションと見なされる場合、ほとんどのものが表示されるため、コードフロー全体をどのように追跡し、何からも保護します(モバイルアプリはパブリッククライアントであり、バックチャネルはありません)。

リソース所有者と見なされている場合、それは、APIから分離され、Authorization Serverから分離され、モバイルアプリに固有の専用バックエンド全体を作成する必要があることを意味します(「クライアントアプリケーション」になります。 「)?

誰かがこれに光を当てることができたら、私に知らせてください。タイトルが正しくないことは知っています。誰かがこの質問に合うようにタイトルを編集できたら、とてもありがたいです。

3
SpiritBob

モバイルアプリは「クライアントアプリケーション」であり、クライアントアプリを機能させるAPIは「リソースサーバー」です(「リソースオーナー」は通常、アプリを使用するユーザーです)。

ここでPKCEを使用すると、認証コードを傍受する攻撃者から保護されます。これは、カスタムURIスキームが使用されている場合、モバイルアプリでは比較的簡単です。あなたが言うように、モバイルアプリはパブリッククライアントであるため、PKCEがなければ、攻撃者は認証コードをアクセストークンと交換してバックエンドに対して呼び出しを行うことができますが、PKCEを使用する場合、攻撃者は「コード検証」も知っている必要があります。クライアントアプリがリクエストを行うたびにランダムに生成され、メモリにのみ保存されます。

以下も参照してください。

2
Justin