OAuth2 v1
概要
DMDATA.JPでは、認可にOAuth2.0を使用します。 認可コードフロー/リフレッシュトークンフロー、クライアント・クレデンシャルズフローをサポートしています。
RFC6749、RFC7009、RFC7636、RFC 9449 - DPoP にて定義されている仕様 に沿って認可サーバーは実装(一部コアな実装を除く)されています。
アカウント連携などの認証 (OpenID Connect) はサポートしていません。
OAuth クライアント
OAuth2.0では、作成したアプリケーションごとにクライアント必要です。クライアントの発行は、認証情報よりできます。
また、リダイレクトURIや使用するフロー、製作者の公開連絡先、アプリケーションの公開URL、利用規約、プライバシーポリシーが必要です。
クライアントの種類
OAuthではクライアントの種類が2つ定められており、「機密」と「公開」があります。
公開は、クライアントシークレットキーが保護できないWebアプリケーションや、ネイティブアプリケーションに使用します。 クライアント・クレデンシャルズフローは使用できません。
機密は、クライアントシークレットキーが保護できるごく限られたWebサーバーなどに使用します。
クライアントの種類が機密の場合、トークンエンドポイントにリクエストする際、シークレットキーが必要となります。
エンドポイント
認可エンドポイント
https://manager.dmdata.jp/account/oauth2/v1/auth
トークンエンドポイント
https://manager.dmdata.jp/account/oauth2/v1/token
失効エンドポイント
https://manager.dmdata.jp/account/oauth2/v1/revoke
リダイレクトURI
このOAuthでは、事前にクライアントに設定されたリダイレクトURIと厳密に一致するかチェックしています。
しかし、ローカル環境では使用できるポートやhttpスキーマが不定であるということから、下記に全て一致するリダイレクトURIついてはポートやhttpスキーマのチェックをしません。
- スキーム 名が
http
であること。 - ホストが
localhost
または IPv4アドレス127.0.0.1
~127.255.255.254
の範囲内であること。 - クライアントに設定されたリダイレクトURIが上記であり、ポートが指定されていないこと。
- 認可コードを要求する時にリダイレクトURIが指定されていること。
以下はポートをチェックしない例です。
- クライアントに設定されたリダイレクトURI
http://127.10.10.1/code - 実際に認可コードを要求する時に使用するリダイレクトURI
http://127.10.10.1:8080/code
-->> 許可
以下はポートをチェックする例です。
- クライアントに設定されたリダイレクトURI
http://127.10.10.1:9090/code - 実際に認可コードを要求する時に使用するリダイレクトURI
http://127.10.10.1:8080/code
-->> 拒否
- クライアントに設定されたリダイレクトURI
http://127.10.10.1:9090/code - 実際に認可コードを要求する時に使用するリダイレクトURI
http://127.10.10.1:9090/code
-->> 許可
以下はhttpスキーマをチェックしない例です。
- クライアントに設定されたリダイレクトURI
http://127.10.10.1/code - 実際に認可コードを要求する時に使用するリダイレクトURI
https://127.10.10.1/code
-->> 許可
- クライアントに設定されたリダイレクトURI
http://127.10.10.1/code - 実際に認可コードを要求する時に使用するリダイレクトURI
https://127.10.10.1:8080/code
-->> 許可
以下はhttpスキーマをチェックする例です。
- クライアントに設定されたリダイレクトURI
https://127.10.10.1:9090/code - 実際に認可コードを要求する時に使用するリダイレクトURI
http://127.10.10.1:9090/code
-->> 拒否
- クライアントに設定されたリダイレクトURI
https://127.10.10.1:9090/code - 実際に認可コードを要求する時に使用するリダイレクトURI
https://127.10.10.1:9090/code
-->> 許可