メインコンテンツへスキップ
/oauth/token password のサポートが追加されました。/oauth/ro エンドポイントの使用は 2017 年 7 月 8 日に非推奨となりました。/oauth/ro エンドポイントは以前、エンドユーザーがメールまたは SMS で受け取ったワンタイムパスワード (OTP) を、 に交換するために使用されていました。Auth0 では、このユースケース向けに /oauth/ro を置き換える新しい API を実装しており、新しいエンドポイントへの移行を推奨しています。

影響を受ける機能

Resource Owner Password Flow (Resource Owner Password Grant または ROPG と呼ばれることもあります) を使用し、Auth0 のライブラリや SDK を使わずに /oauth/ro を直接呼び出している場合、この変更の影響を受けます。Lock や Auth0.js などの Auth0 ライブラリは、内部で /oauth/ro を使用しないよう更新されています。lock- ライブラリを使用している場合は、代わりに Lock のパスワードレスモードを使用できるようになりました。
ユーザーの /oauth/ro ベースのアクセストークンの有効期限が切れると、/oauth/ro のリフレッシュトークンを使って新しいアクセストークンを取得するために /oauth/token を呼び出すことができないため、Auth0 は再認証を要求します (強制ログアウトが必要です) 。/oauth/ro から /oauth/token への移行中は、現在ログインしているすべてのユーザーが再度ログインする必要があります。

Actions

リクエストの変更点

以前は、/oauth/ro へのリクエストのペイロードは次のようになっていました。
{
  "grant_type": "password",
  "client_id": "123",
  "username": "alice",
  "password": "A3ddj3w", 
  "connection": "my-database-connection",
  "scope": "openid email favorite_color offline_access",
  "device": "my-device-name"
}
新しい実装には、次の変更があります。
  • トークン交換を実行するエンドポイントは、/oauth/token になりました。
  • 特定の接続 (またはレルム) からユーザーを認証するには、Auth0 独自のグラントタイプを使用します。
  • Auth0 は、標準の OIDC スコープに加えて、カスタム API で定義したスコープもサポートします。
  • 上記の favorite_color のように、これらのカテゴリのいずれにも当てはまらないスコープは、有効なスコープではなくなりました。
  • device パラメーターは削除されました。
  • audience パラメーターは省略可能です。
以下は、/oauth/token へのリクエストペイロードの例です。
{
  "grant_type": "http://auth0.com/oauth/grant-type/password-realm",
  "client_id": "123",
  "username": "alice",
  "password": "A3ddj3w",
  "realm": "my-database-connection",
  "scope": "openid email offline_access",
  "audience": "https://api.example.com"
}
  • ここでは、標準の password ではなく、password-realm をグラントタイプとして指定します。
  • client_idusernamepassword の各パラメーターはそのままです。
  • Password Realm グラントタイプを使用しているため realm が含まれており、以前の呼び出しで使っていた connection パラメーターの代わりになります。
  • scope パラメーターもほぼ同じですが、OIDC 以外の値は受け付けません。
  • audience パラメーターを追加して、トークンの対象となる API のを指定できます。

レスポンスの変更

/oauth/ro からのレスポンスは、次のような形式でした。
{
  "access_token": "SlAV32hkKG",
  "token_type": "Bearer",
  "refresh_token": "8xLOxBtZp8",
  "expires_in": 3600,
  "id_token": "eyJ..."
}
  • 返されたアクセストークンは、/userinfo エンドポイントの呼び出しに使用できます (audience パラメーターで指定した API が、として RS256 を使用している場合) 。また、指定されている場合は、カスタム API の呼び出しにも使用できます。
  • から要求された場合、IDトークンは必ず RS256 で署名されます。
  • は、offline_access スコープが付与され、かつ API で Allow offline access が有効になっている場合にのみ返されます。
以下は、/oauth/token から返される OIDC 準拠レスポンスの例です。
{
  "access_token": "eyJ...",
  "token_type": "Bearer",
  "refresh_token": "8xLOxBtZp8",
  "expires_in": 3600,
  "id_token": "eyJ..."
}

移行の確認

  1. コードベースの移行が完了し、アプリがそのエンドポイントを呼び出していないことを確認したら、Dashboard > Tenant Settings > Advanced に移動します。
  2. Migrations までスクロールし、レガシー /oauth/ro Endpoint をオフにします。このスイッチをオフにすると、テナントで非推奨のエンドポイントが無効になり、使用できなくなります。
このスイッチをオフにした結果ログインが失敗する場合は、アプリケーションからレガシーコードがまだ完全に削除されていないことを示しています。 本番環境で移行が正常に完了したら、このスイッチはオフにしてそのままにしておき、非推奨の機能を今後使用できないようにします。