/oauth/token で、パスワードがサポートされるようになりました。/oauth/ro エンドポイントの使用は 2017 年 7 月 8 日に非推奨となりました。/oauth/ro エンドポイントは以前、エンドユーザーがメールまたは SMS で受け取ったワンタイムパスワード (OTP) を、と に交換するために使用されていました。Auth0 では、このユースケースで /oauth/ro に代わる新しい API を実装しており、新しいエンドポイントへの移行を推奨しています。
影響を受ける機能
/oauth/ro を直接呼び出している場合に影響します。
ユーザーの
/oauth/ro ベースのアクセストークンの有効期限が切れると、Auth0 は再認証を強制します (強制ログアウトが必要です) 。これは、/oauth/ro のリフレッシュトークンを使って新しいアクセストークンを取得するために /oauth/token を呼び出すことができないためです。現在ログインしているすべてのユーザーは、/oauth/ro から /oauth/token への移行時に再度ログインする必要があります。Actions
リクエストの変更
/oauth/ro へのリクエストのペイロードは次のようになっていました。
- token exchange を実行するエンドポイントは
/oauth/tokenになりました。 - 特定の接続 (またはレルム) のユーザーを認証するために、Auth0 独自のグラントタイプが使用されます。
- Auth0 は標準の OIDC スコープに加えて、カスタム API で定義したスコープもサポートしています。
- 上記の
favorite_colorのように、これらのカテゴリのいずれにも当てはまらない scope は、無効になりました。 deviceパラメーターは削除されました。audienceパラメーターは省略可能です。
/oauth/token へのリクエストのペイロードの例を次に示します。
- グラントタイプは、ここでは
http://auth0.com/oauth/grant-type/passwordless/otpとして指定します。 - パラメーター
client_idとusernameは変わりません。 client_secretは、 (例: regular web app) の場合に指定する必要があります。- ワンタイムパスワードは、
passwordパラメーターではなくotpパラメーターで送信する必要があります。 realmは接続を識別するために使用され、以前の呼び出しで使われていたconnectionパラメーターの代わりになります。scopeパラメーターはほぼ同じですが、OIDC 以外の値は受け付けません。audienceパラメーターを追加して、トークンの対象となる API の を指定できます。
レスポンスの変更
/oauth/ro からのレスポンスは、次のような形式でした。
- 返されたアクセストークンは、
/userinfoエンドポイントを呼び出すために有効です (audienceパラメーターで指定された API が、として RS256 を使用している場合) 。また、指定されていればカスタム API に対しても有効です。 - から要求された場合、ID トークンは強制的に RS256 で署名されます。
offline_accessスコープが付与され、API で オフラインアクセスの許可 が設定されている場合にのみ、が返されます。
/oauth/token から返される OIDC 準拠レスポンスの例です。
SDK を使用する場合のコード変更
OIDC Conformant flag を true に設定してください。
移行の確認
- 非推奨のエンドポイントを使用しているかどうかを確認するには、テナントログを確認し、非推奨通知で絞り込んだうえで、
oauth/ropasswordless: This feature is being deprecated と表示されるログを探します。次のクエリを使って、直接検索することもできます:type:depnote AND description:*passwordless*。 - コードベースの移行を終え、アプリがそのエンドポイントを呼び出していないことを確認したら、Auth0 Dashboardの Tenant Settings > Advanced に移動します。
- Migrations までスクロールし、レガシー
/oauth/roエンドポイント をオフにします。このスイッチをオフにすると、テナント内でその非推奨エンドポイントが無効になり、使用できなくなります。