- Express OpenID Connect SDK: フローを実装する最も簡単な方法で、煩雑な処理の大半を担います。Auth0 の JavaScript SDK を使用する場合は、ご利用のアーキテクチャに適した軽減策を実装していることを確認してください。詳細については、Auth0.js v9 Reference を参照してください。
- Authentication API: 独自のソリューションを構築する場合は、このまま読み進めて API を直接呼び出す方法を確認してください。
前提条件
- Application Type で Single-Page App を選択します。
- Allowed Callback URL に
{https://yourApp/callback}を追加します。 - アプリケーションの Grant Types に Implicit が含まれていることを確認します。詳細については、グラントタイプを更新するを参照してください。
- ユーザーを認証する;
- 認証を処理するために、ユーザーを にリダイレクトする;
- 有効な (SSO) セッションがあるかどうかを確認する;
- 以前に同意が与えられていない場合は、要求された権限レベルについてユーザーの同意を得る。
パラメーター
| Parameter Name | Description |
|---|---|
response_type | Auth0 が返す認証情報の種類 (code または token) を示します。Implicit Flow では、値として id_token、token、または id_token token を指定できます。具体的には、id_token は IDトークン を返し、token は アクセストークン を返します。 |
response_mode | レスポンスパラメーターの返却方法を指定します。セキュリティ上の理由から、値は form_post にする必要があります。このモードでは、レスポンスパラメーターは HTTP POST メソッドで送信される HTML フォームの値としてエンコードされ、application/x-www-form-urlencoded 形式でボディに格納されます。 |
client_id | アプリケーションの クライアントID です。この値は アプリケーションの設定 で確認できます。 |
redirect_uri | ユーザーが認可を付与した後に、Auth0 がブラウザーをリダイレクトする URL です。この URL は、Application Settings で有効な callback URL として指定する必要があります。 警告: OAuth 2.0 Specification に従い、Auth0 はハッシュ以降のすべてを削除し、フラグメントは いっさい考慮しません。 |
scope | 認可をリクエストする スコープ を指定します。これにより、返されるクレーム (またはユーザー属性) が決まります。各値はスペースで区切る必要があります。profile や email などのユーザーに関する 標準 OpenID Connect (OIDC) scopes、namespaced format に準拠した カスタムクレーム、または対象 API がサポートする任意のスコープ (たとえば read:contacts) をリクエストできます。 |
state | (推奨) アプリが最初のリクエストに追加し、Auth0 がアプリケーションにリダイレクトする際に含める、不透明な任意の英数字文字列です。この値を使用して Cross-site Request Forgery (CSRF) 攻撃を防ぐ方法については、Mitigate CSRF Attacks With State Parameters を参照してください。 |
nonce | (response_type に id_token token が含まれる場合は必須、それ以外では推奨) アプリが最初のリクエストに追加し、Auth0 が IDトークン に含める、暗号学的にランダムな文字列です。トークンのリプレイ攻撃を防ぐために使用されます。 |
connection | (任意) ユーザーに特定の接続でサインインさせます。たとえば、値として github を渡すと、ユーザーは GitHub アカウントでログインするために直接 GitHub に送られます。指定しない場合、ユーザーには設定済みのすべての接続を含む Auth0 Lock 画面が表示されます。設定済みの接続の一覧は、アプリケーションの Connections タブで確認できます。 |
organization | (任意) ユーザーの認証時に使用する組織の ID です。指定しない場合、アプリケーションで Display Organization Prompt が設定されていれば、ユーザーは認証時に組織名を入力できます。 |
invitation | (任意) 組織への招待の ticket ID です。組織にメンバーを招待する 場合、ユーザーが招待を承諾したときに、アプリケーションは invitation と organization のキーと値のペアを転送して、招待の承諾を処理する必要があります。 |
レスポンス
HTTP 302 レスポンスが返されます。要求した認証情報はレスポンス本文にエンコードされています。
response_type として何をリクエストしたかによって異なることに注意してください。
| レスポンスタイプ | コンポーネント |
|---|---|
| id_token | IDトークン |
| token | アクセストークン (expires_in と token_type の値を含む) |
| id_token token | IDトークン、アクセストークン (expires_in と token_type の値を含む) |
利用例
基本認証リクエスト
ユーザーの名前とプロフィール画像を取得する
name クレーム と picture クレーム が含まれます。IDトークンをデコードすると、次のようになります。
GitHub でユーザーをログインさせる
connection パラメーターを渡し、その値を接続名 (この場合は github) に設定する必要があります。
これで、IDトークンには GitHub から返されたユーザーの一意の ID を含む sub クレームが格納されます。IDトークンをデコードすると、次のようになります。