リダイレクト サーバーなしで OAuth 2.0 を使用できますか?
P粉710478990
2023-08-22 22:18:09
<p>SurveyMonkey API と対話するネイティブ Java ベースのクライアントを作成しようとしています。 </p>
<p>SurveyMonkey では、OAuth 2.0 を使用して有効期間の長いアクセス トークンを生成する必要がありますが、これについてはあまり詳しくありません。 </p>
<p>何時間もグーグルで調べましたが、答えはノーだと思いますが、確認したかっただけです。</p>
<p>クラウドに独自のリダイレクト サーバーをセットアップせずに、</strong>SurveyMonkey と対話するための単純な Java クライアントを作成できますか? </p>
<p>OAuth 2.0 によって生成されたトークンを受信できるようにするには、独自のオンライン サービスが必要だと思います。 SurveyMonkey にトークンをクライアントに直接送信させることはできないでしょうか? </p>
<p>独自のカスタム サーブレットをどこかに設定し、それを redirect_uri として使用する場合、正しいフローは次のようになります。 </p>
<ol>
<li>Java クライアントは SurveyMonkey にトークンを要求します。ここで、redirect_uri はカスタム サーブレットの URL です。 </li>
<li>SurveyMonkey は、カスタム サーブレットの URL にトークンを送信します。 </li>
<li>Java クライアントは、トークンを取得するまでカスタム サーブレットの URL をポーリングします。 </li>
</ol>
<p>これは正しいですか? </p>
はい、コールバック URL なしで OAuth2 を使用することは可能です。 #RFC6749 では、いくつかのプロセスが導入されています。暗黙的フロー (現在は非推奨です #[1]) と認可コード フロー (認可コード) にはリダイレクト URI が必要です。ただし、リソース所有者のパスワード認証プロセス (これも非推奨です #[1]) は必要ありません。 RFC6749 の公開以来、
リダイレクト URI を必要としない他の仕様も公開されました。: OAuth 2.0 クライアント認証および認可付与用の Security Assertion Markup Language (SAML) 2.0 構成ファイル-
RFC7523
: OAuth 2.0 クライアント認証および認可付与用の JSON Web Token (JWT) 構成ファイル-
RFC8628
: OAuth 2.0 デバイス認証付与-
Kerberos 付与タイプ: https://is.docs.wso2.com/en/5.9.0/learn/kerberos-grant/
- を参照してください。
さらに、OpenID Connect を使用する場合、応答パターンは必ずしも
redirect_uri
パラメーターへのリダイレクトではなく、そのエンドポイントへの POST リクエストになる可能性があります。詳細については、OAuth 2.0 フォーム POST 応答パターン
を作成できます。仕様を参照してください。
とにかく、上記の認証タイプがニーズに合わない場合は、カスタム認証タイプ[1]:
OAuth 2.1 仕様 (ドラフト 07)は完全に正確ではありません。OAuth プロセスの要点は、ユーザー (データにアクセスする代理のクライアント) がデータにアクセスする許可を与える必要があるということです。
「認証手順」を参照してください。ユーザーを OAuth 認証ページに送信する必要があります: リーリー これにより、アカウントのどの部分へのアクセスを要求しているのかを示すページがユーザーに表示されます (アンケートの表示、回答の表示など)。ユーザーがそのページで「承認」をクリックして承認すると、SurveyMonkey はリダイレクト URI として設定したページに自動的にジャンプし (上記の URL のリダイレクト URI がアプリケーション設定で設定したものと一致することを確認してください)、承認コードに戻ります。
したがって、リダイレクト URL が
https://example.com/surveymonkey/oauthの場合、SurveyMonkey は認証コードを使用してユーザーをその URL にリダイレクトします:
https://example.com/surveymonkey/oauth?code=<auth_code>
その後、その認証コードを使用して POST リクエストを
https://api.surveymonkey.net/oauth/token?api_key=<your_api_key>に送信してアクセス トークンを交換する必要があります。次の POST パラメータを提供します:
リーリー
これにより、ユーザー アカウントのデータにアクセスするために使用できるアクセス トークンが返されます。アクセス トークンをユーザーに与える必要はありません。アクセス トークンはユーザー アカウントにアクセスするために使用されます。ポーリングやその他の操作は必要ありません。自分のアカウントにのみアクセスしている場合は、アプリケーション設定ページで提供されるアクセス トークンを使用できます。それ以外の場合は、独自のリダイレクト サーバーを設定しない限り、ユーザーのアクセス トークンを取得する方法はありません (すべてのユーザーが同じグループに属している場合、つまり、同じアカウントに複数のユーザーが属している場合を除きます。ただし、それについては説明しません)。 SurveyMonkey には認証コードを送信する場所が必要ですが、単にリクエストすることはできません。