Authentication(OAuth)API v2 は、OpenID 仕様と PCKE ワークフロー(デスクトップおよび Single-Page Web アプリ用)との整合性を提供し、パフォーマンスと最新のテクノロジー スタックを提供するようになりました。この記事では、アプリ コードを移行する方法を示します。完全なドキュメントは、こちらから利用可能です。その他のご質問は、[email protected] までご連絡ください。v1 はまもなく非推奨となります。
2-legged トークンの OAuth 2 v1 エンドポイントから v2 エンドポイントへの移行
OAuth 2 v1 から v2 に移行するには、リクエストで渡されるクライアント認証情報の方法を簡単に変更する必要があります。v1 APIは 、リクエストボディで Client Id と Client Secret を指定します。一方、v2 では Authorization ヘッダーに Basic Auth Type で Client Id と Client Secret を指定します。
※ 以下、APS_HOST は https://developer.api.autodesk.com と等価
- エンドポイントのベース URL の変更
対応前(v1):
APS_HOST/authentication/v1/authenticate
対応後(v2):
APS_HOST/authentication/v2/token
- v1 のパラメータは、リクエスト ボディにクライアントの認証情報を使用するのに対して、v2 はヘッダーに Authorization: basic でクライアントの認証情報を要求します。認証は、Basic ${Base64<client_id>:<client_secret>)} の形式でなければなりません。
- リクエスト ヘッダー(パラメータ)の変更
対応前(v1):
Content-Type: application/x-www-form-urlencoded
対応後(v2):
Content-Type: application/x-www-form-urlencoded
Authorization: Basic RG4ydUlwOGp1S0hzRmV1WHV0bmtmZ0FQWHFkdWx5WHA6b01YZWEyMEZVY3Q0REJqYw=
- リクエスト ボディ(パラメータ)の変更
対応前(v1):
client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE
client_secret=xyz
grant_type=client_credentials
scope=data:read
対応後(v2):
grant_type=client_credentials
scope=data:read
- レスポンスに変更はありません
- Curl コマンド例
対応前(v1):
curl -v 'APS_HOST/authentication/v1/authenticate' -X 'POST' -H 'Content-Type: application/x-www-form-urlencoded' -d ' client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE&client_secret=eUruM8HRyc7BAQ1e& grant_type=client_credentials& scope=data:read '
対応後(v2):
curl --location -g --request POST 'APS_HOST/authentication/v2/token' \ --header 'Authorization: Basic RG4ydUlwOGp1S0hzRmV1WHV0bmtmZ0FQWHFkdWx5WHA6b01YZWEyMEZVY3Q0REJqYw==' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'scope=data:read'
- API ドキュメント リンク
v1:https://aps.autodesk.com/en/docs/oauth/v1/tutorials/get-2-legged-token/
v2:https://aps.autodesk.com/en/docs/oauth/v2/tutorials/get-2-legged-token/
3-legged トークンの OAuth 2 v1 エンドポイントから v2 エンドポイントへの移行
authorize エンドポイントの変更点は、バージョン番号が v1 から v2 になったのみです。
- エンドポイントのベース URL の変更
対応前(v1):
APS_HOST/authentication/v1/authorize
対応後(v2):
APS_HOST/authentication/v2/authorize
- Curl コマンド例
対応前(v1):
curl --location -g --request ‘APS_HOST/authentication/v1/authorize? response_type=code &client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE &redirect_uri=http%3A%2F%2Fsampleapp.com%2Foauth%2Fcallback%3Ffoo%3Dbar &scope=data:read
対応後(v2):
curl --location -g --request GET 'APS_HOST/authentication/v2/authorize? response_type=code &client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE &redirect_uri=http%3A%2F%2Fsampleapp.com%2Foauth%2Fcallback%3Ffoo%3Dbar &scope=data:read
- API ドキュメント リンク
v1:https://aps.autodesk.com/en/docs/oauth/v1/tutorials/get-3-legged-token/
v2:https://aps.autodesk.com/en/docs/oauth/v2/tutorials/get-3-legged-token/
オーソライゼーション コードからアクセス トークンへの変換
- エンドポイントのベース URL の変更
対応前(v1):
APS_HOST/authentication/v1/gettoken
対応後(v2):
APS_HOST/authentication/v2/token
- v1は、リクエスト ボディにクライアントの認証情報を使用するのに対し、v2 は、リクエスト ヘッダーに Authorization: basic でクライアントの認証情報を要求します。認証は、Basic ${Base64(<client_id>:<client_secret>)} の形式でなければなりません。また、v2 はヘッダーで application/json を受け入れます。
- リクエスト ヘッダー(パラメータ)の変更
対応前(v1):
Content-Type: application/x-www-form-urlencoded
対応後(v2):
Content-Type: application/x-www-form-urlencoded
Authorization: Basic RG4ydUlwOGp1S0hzRmV1WHV0bmtmZ0FQWHFkdWx5WHA6b01YZWEyMEZVY3Q0REJqYw==
Accept: application/json
- リクエスト ボディ(パラメータ)の変更
対応前(v1):
grant_type=authorization_code
client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE
client_secret=eUruM8HRyc7BAQ1e redirect_uri=http%3A%2F%2Fsampleapp.com%2Foauth%2Fcallback%3Ffoo%3Dbar
code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I
対応後(v2):
grant_type=authorization_code redirect_uri=http%3A%2F%2Fsampleapp.com%2Foauth%2Fcallback%3Ffoo%3Dbar
code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I
- レスポンスに変更はありません
- Curl コマンド例
対応前(v1):
curl -v 'APS_HOST/authentication/v1/gettoken' \ -X 'POST' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE' \ -d 'client_secret=eUruM8HRyc7BAQ1e' \ -d 'grant_type=authorization_code' \ -d 'code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I' \ -d 'redirect_uri=http://sampleapp.com/oauth/callback'
対応後(v2):
curl -v 'APS_HOST/authentication/v2/token' -X 'POST' -H 'Content-Type: application/x-www-form-urlencoded'' -H 'accept: application/json' \' -d 'grant_type=authorization_code' -d 'code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I' -d 'redirect_uri=http://sampleapp.com/oauth/callback'
- API ドキュメント リンク
v1:https://aps.autodesk.com/en/docs/oauth/v1/reference/http/gettoken-POST/
リフレッシュ トークン
- エンドポイントのベース URL の変更
対応前(v1):
https://developer.api.autodesk.com/authentication/v1/refreshtoken
対応後(v2):
https://developer.api.autodesk.com/authentication/v2/token
- v1 は、リクエスト ボディにクライアントの認証情報を使用するのに対し、v2 は、リクエスト ヘッダーに Authorization: basic でクライアントの認証情報を要求します。認証は、Basic ${Base64(<client_id>:<client_secret>)} の形式でなければなりません。また、v2 はヘッダーで application/json を受け入れます。
- リクエスト ヘッダー(パラメータ)の変更
対応前(v1):
Content-Type: application/x-www-form-urlencoded
対応後(v2):
Content-Type: application/x-www-form-urlencoded Authorization: Basic RG4ydUlwOGp1S0hzRmV1WHV0bmtmZ0FQWHFkd Wx5WHA6b01YZWEyMEZVY3Q0REJqYw== Accept: application/json
- リクエストボディ(パラメータ)の変更
対応前(v1):
grant_type=refresh_token client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE client_secret=eUruM8HRyc7BAQ1e refresh_token=Jnrqqp7b8GrfqIE53WocjEyt59RClDYhqbYeOCWeqM scope=data:read
対応後(v2):
grant_type=refresh_token refresh_token=Jnrqqp7b8GrfqIE53WocjEyt59RClDYhqbYeOCWeqM scope=data:read
- レスポンスに変更はありません
- Curl コマンド例
対応前(v1):
curl -v 'https://developer.api.autodesk.com/authentication/v1/refreshtoken' -X 'POST' -H 'Content-Type: application/x-www-form-urlencoded' -d ' client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE& client_secret=eUruM8HRyc7BAQ1e& grant_type=refresh_token& refresh_token=i0kBWTHzI0JVKWTOoFn6cvPk32SZcs5CUtwic3ndu
対応後(v2):
curl -v 'https://developer.api.autodesk.com/authentication/v2/token' -X 'POST' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: application/json' -H 'Authorization: Basic YWthc2h0ZXN0OmFrYXNodGVzdA==' \ -d 'grant_type=refresh_token' -d 'refresh_token=Jnrqqp7b8GrfqIE53WocjEyt59RClDYhqbYeOCWeqM' -d 'scope=data:read'
- API ドキュメント リンク
v1:https://aps.autodesk.com/en/docs/oauth/v1/reference/http/refreshtoken-POST/
v2:https://aps.autodesk.com/en/docs/oauth/v2/reference/http/gettoken-POST/
v2 でのリフレッシュトークン / アクセストークン無効化の導入
- エンドポイントのベース URL
https://developer.api.autodesk.com/authentication/v2/revoke
- リクエスト ヘッダー
Content-Type: application/x-www-form-urlencoded Authorization: Basic RG4ydUlwOGp1S0hzRmV1WHV0bmtmZ0FQWHFkd Wx5WHA6b01YZWEyMEZVY3Q0REJqYw==
- リクエスト ボディ
token_type_hint=refresh_token refresh_token=Jnrqqp7b8GrfqIE53WocjEyt59RClDYhqbYeOCWeq
- Curl コマンド例
curl -v 'https://developer.api.autodesk.com/authentication/v2/revoke' -X 'POST' -H 'Content-Type: application/x-www-form-urlencoded' -d '{ 'token=9uACOhcF7d94rYJDKmulcyssEeyZ4HVNTwqng6Qekt' \ 'token_type_hint=refresh_token' \ 'client_id=0oawv18w63i03CgmZ0h7' }
- API ドキュメント リンク
https://aps.autodesk.com/en/docs/oauth/v2/reference/http/revoke-POST/
※ 現段階で Authentication(OAuth)API v1 は 2023 年 10 月 30 日に非推奨設定されます。
※ 新規にアプリを開発する場合には、Authentication(OAuth)API v2 の使用が推奨されます。
※ 旧 Forge SDK では、Forge Node.js SDK が v2 対応しています。
Feature (OUATH2 V2 Migration) (#98) · Autodesk-Forge/forge-api-nodejs-client@f1b3691 · GitHub
※ 旧 Forge .NET SDK は、5 月末に v2 対応しました。
Feature (Migrate from OuathV1 to OuathV2) · Autodesk-Forge/forge-api-dotnet-client@8fe4900 · GitHub
※ その他の 旧 Forge SDK では対応予定はありません。
※ 本記事は Migration guide - OAuth2 v1 to v2 | Autodesk Platform Services から転写・翻訳、Authentication v2 and deprecation of v1 | Autodesk Platform Services の内容を加味したものです。
コメント