サイン・アウト

前のセクションでは、OAuth プロトコルを使用して、サービスが Keyrock でサイン・インを委任できる方法について説明しました。このセクションでは、完全なサイン・アウトを実行するためにサービスを設定する方法について説明します。これは、サービス内のユーザ・セッションだけでなく Keyrock 内のユーザ・セッションも削除することを意味します。

ユーザがサービスを介してサイン・インするときには、2つの方法があります :

  • ユーザがまだ Keyrock にサイン・インしていないとき

  • ユーザが以前に Keyrock ポータルにサイン・インしたことがある場合

サイン・アウトを成功させるには、アプリケーションを登録するときの Sign-out Callback Url パラメータを追加することをお勧めします。 アプリケーションがすでに作成されている場合は編集できます。それ以外の場合、サイン・アウトのリクエストはサービスが Keyrock に登録した URL にリダイレクトされます。 oauth の設定 を確認してください。

サイン・アウトのプロセスはユーザにとって完全に透過的です。

ユーザはまだ Keyrock にサイン・インしていない場合

ユーザが keyrock またはサービスで認可されていない場合にサイン・アウトするプロセスは以下のとおりです :

  1. ユーザは Keyrock を介してサービスにサイン・インします。ユーザが 有効なクレデンシャルを入力すると、oauth_sign_in パラメータを含むユーザ・セッションが 作成されます。このパラメーターは、ユーザが Keyrock ポータルに直接サイン・インする のではなく、Keyrock に登録されたサービスを介してサイン・インしたことを意味します

  2. Keyrock がユーザ・セッションを作成したら、アクセス・トークンを 生成するためにOAuth フローを続けます

  3. 後で、ユーザがサイン・アウトしたいときには、サービスに /auth/external_logout への DELETE リクエストを出すボタンを含める必要があります。 Keyrock がデータベースで登録されていないサービスを見つけるのを容易にするために、 他に OAuth クライアント ID をクエリ文字列に含めることをお勧めします

  4. Keyrock OAuth クライアント ID とサービス・ドメイン名を使用して サービスを検索します。Keyrock が有効なサービスを見つけた場合、それを削除するために oauth_sign_in がユーザ・セッションに保存されていることを確認します

  5. 最後に、Keyrock は Sign-out Callback URL または URL に格納されている アドレスにユーザをリダイレクトします。サービスは自分のユーザ・セッションを 削除する必要があります

図1: サービスによる認可

以前に Keyrock ポータルでサイン・インしたユーザの場合

このプロセスは前のプロセスと似ていますが、この場合、ユーザはサービスよりも以前に Keyrock にサインインしています。 ユーザ・セッションが Keyrock で作成されるとき、 oauth_sign_in はそれに保存されません。そのため、ユーザが単一のサービスから サイン・アウトすると、そのユーザ・セッションは Keyrock で削除されません。 ユーザがサービスを介して再度サインインしようとした場合、ユーザ・セッションは まだ残っているため、Keyrock はユーザにクレデンシャルの紹介を求めません。

図2: Keyrock による認可