/oauth/tokenに追加されました。/oauth/roエンドポイントの使用は2017年7月8日に廃止されました。/oauth/roエンドポイントは、IDトークンやアクセストークンのためにエンドユーザーがメールまたはSMSで受信するワンタイムパスワード(OTP)のやり取りに使用されていました。Auth0にはこのユースケースの/oauth/roに代わる新しいAPIが実装されているため、その新しいエンドポイントの使用をお勧めします。
影響のある機能
この変更がユーザーに影響するのは、リソース所有者のパスワードレス資格情報交換を使用していて、Auth0ライブラリーやSDKを使わずに/oauth/roを直接呼び出す場合です。
ユーザーの
/oauth/roベースのアクセストークンが期限切れになると、強制的に再認証が行われます(強制ログアウトが必要)。これは、/oauth/roのリフレッシュトークンでは、/oauth/tokenを呼び出して新しいアクセストークンを取得することができないからです。/oauth/roから/oauth/tokenへの移行時に、ログインしているユーザーはすべてログアウトしなければなりません。アクション
要求の変更内容
これまで、/oauth/roへの要求には、以下のようなペイロードが含まれていました。
- トークン交換を実行するエンドポイントは
/oauth/tokenになりました。 - Auth0独自の付与タイプは、特定の接続(またはレルム)からユーザーを認証するために使用されます。
- Auth0では、カスタムAPIで定義されたスコープの他に、標準OIDCスコープがサポートされます。
- 上記の
favorite_colorなど、これらのどのカテゴリーにも該当しないスコープは、有効なスコープではなくなりました。 deviceパラメーターは削除されています。audienceパラメーターは任意です。
/oauth/tokenへの要求のペイロードの例です。
- ここでは、付与タイプに
http://auth0.com/oauth/grant-type/passwordless/otpを指定します。 client_idとusernameパラメーターに変更はありません。client_secretは、機密クライアント(通常のWebアプリなど)には指定する必要があります。- ワンタイムパスワードは
passwordパラメーターではなく、otpパラメーターに含めて送信する必要があります。 realmは接続を識別するために使用され、以前の呼び出しからのconnectionパラメーターを置き換えます。scopeパラメーターはほとんど同じですが、OIDC以外の値は受け入れません。audienceパラメーターは追加して、トークンの対象であるAPIオーディエンスを示すことができます。
応答での変更
/oauth/roからの応答は、以下のような形式になります。
- 返されるアクセストークンは、
/userinfoエンドポイント(audienceパラメーターで指定のAPIにRS256を署名アルゴリズムが使われている場合)と任意のカスタムAPI(指定されている場合)の呼び出しに使用できます。 - IDトークンは、パブリッククライアントに要求されると、RS256を使用して強制的に署名されます。
- リフレッシュトークンは、
offline_accessスコープが付与され、APIに [Allow offline access(オンラインでのアクセスを許可する)] が設定されている場合にのみ返されます。
/oauth/tokenから返されたOIDC準拠の応答の例です。
SDK使用でのコード変更
Auth0が提供するAndroidまたはiOS用のネイティブライブラリーをアプリケーションが使用している場合には、ライブラリーのバージョンを必ず以下の最小バージョン以降にしてください。また、ライブラリーを構成する際には、必ず[OIDC Conformant(OIDC準拠)]フラグをtrueに設定してください。
| ライブラリー | 最小バージョン |
|---|---|
| Android SDK | 1.2 |
| Lock Android | 2.17 |
| Swift SDK | 1.20.0 |
| Lock iOS | 2.14.0 |
移行を確認する
- 廃止されたエンドポイントを使用しているか確認するには、テナントログを確認し、フィルターを [Deprecation Notice(廃止の通知)] に設定して「
oauth/ropasswordless:This feature is being deprecated (パスワードレス:この機能は廃止されました)」というログを確認します。この検索は、「type:depnote AND description:*passwordless*」というクエリを使って直接行うこともできます。 - コードベースを移行し、アプリがエンドポイントを呼び出していないことを確認したら、[Dashboard]>[Tenant Settings(テナント設定)]>[Advanced(詳細)] に移動します。
- [Migrations(移行)] まで下へスクロールして、 [Legacy
/oauth/roEndpoint(レガシー/oauth/roエンドポイント)] をオフにします。このスイッチをオフにすると、廃止されたエンドポイントがテナントで無効となり、使用を防ぐことができます。