お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の
英語版を参照してください。
概要
OpenID Connect(OIDC)は、OAuth 2.0認可フレームワーク上に構築されたアイデンティティレイヤーです。これにより、アプリケーションは外部のアイデンティティプロバイダー(IdP)を通じてユーザーの本人確認を行うことができます。
OIDCベースの認証フローでは、アイデンティティプロバイダーがユーザーの認証とトークンの発行を担います。Zoho Directoryは、設定されたOIDCエンドポイントと認証情報を使用して外部IdPと通信し、ユーザーの認証、返されたトークンの検証、必要に応じたユーザー情報の取得を行います。
設定
Zoho Directoryはサービスプロバイダー(SP)として機能し、外部のアイデンティティプロバイダー(IdP)は、ユーザーの認証を担うOpenID Connectプロバイダーとして機能します。
-
Zoho DirectoryでOIDC認証を設定するには、管理者がZoho DirectoryをクライアントアプリケーションとしてIdPに登録し、IdPの詳細をZoho Directoryに入力する必要があります。
-
Zoho DirectoryでOIDCを設定するには、IdPから次の情報を取得する必要があります。
- クライアントID:IdPが各要求でZoho Directoryを識別するために使用します。
- クライアントシークレット:認可コードをトークンと交換する際のZoho Directoryの認証に使用します。
- 発行者URL:IdPから取得する発行者URLです。認可URLとアクセストークンURLを自動的に取得するために使用します。
- 認可URL:ユーザーは、認証とアクセスの許可を行うために、このURLにリダイレクトされます。
- アクセストークンURL:認可コードをトークンと交換するために使用するURLです。
- スコープ:認証時に要求するZoho Directoryの情報を指定します。初期設定のスコープは、openid、email、profileです。
- (任意)ユーザー情報URL:IdPから追加のユーザー情報を取得するために使用します。
- Zoho DirectoryからはリダイレクトURIが提供されます。このURIをIdPに設定する必要があります。ユーザーはサインイン後、このURIにリダイレクトされます。
フロー
OIDCフローは、ブラウザー、Zoho Directory、アイデンティティプロバイダーの間で実行されます。サインイン時には、Zoho Directoryが作成するstateと、IdPが作成するcodeの2つの値がブラウザーを経由します。
- state:IdPに送信される要求に追加される、暗号化されたランダムな値です。Zohoは、安全なCookieを使用してユーザーのブラウザーに関連付けたコピーを保持します。IdPはこの値を変更せずに返します。Zohoは、返されたstateがそのブラウザー用に保持しているコピーと一致するかを確認し、偽造または再送された応答をブロックします。
- code:IdPが発行し、リダイレクトURIで返す、有効期間が短い一度限りの値です。
ブラウザーを経由するのはリダイレクトと一度限りのコードのみです。トークンの要求と応答は、Zoho DirectoryとIdPの間で直接送受信されます。
1. ユーザーによるサインインの試行
ユーザーがZoho Directoryと連携しているアプリケーションにサインインしようとすると、Zoho Directoryは、そのユーザーにOIDC認証が設定されていることを識別します。
2. アイデンティティプロバイダーへのリダイレクト
Zoho Directoryは、認証のためにブラウザーをIdPへリダイレクトします。認可要求には、クライアントID、リダイレクトURI、要求されたスコープ、response_type=code、state値が含まれます。
3. ユーザーの認証
IdPは、ユーザー名とパスワード、MFA、パスワードレス認証など、設定されている認証方法でユーザーを認証します。ユーザーの認証情報はIdPによって検証されます。Zoho Directoryは認証プロセスには関与しません。
4. 認可コードの返却
認証に成功すると、IdPは一度限りのcodeと同じstateを付加して、ブラウザーをZoho DirectoryのリダイレクトURIにリダイレクトします。Zoho Directoryは、stateがそのブラウザー用に保存されている値と一致するかを確認します。一致しない場合やIdPからエラーが返された場合、サインインは中止されます。
5. Zoho Directoryによるアイデンティティプロバイダーへのトークンの要求
codeを受信すると、Zoho Directoryのサーバーは、grant_type=authorization_codeを指定したHTTPS POST要求を使用して、コードをIdPのトークンエンドポイントに安全に送信します。Zoho Directoryは、クライアントIDとクライアントシークレットを使用して要求を認証します。その後、IdPはIDトークンとアクセストークンをZoho Directoryに返します。
- IDトークン:認証されたユーザーに関する情報が含まれます。
- アクセストークン:保護されたリソースやAPIへのアクセスに使用します。必要に応じて追加のユーザー情報を取得する場合も含まれます。
6. トークンの検証
ユーザーをサインインさせる前に、Zoho DirectoryはIdPから受信したIDトークンを検証します。Zoho Directoryは、IDトークンに対して次の確認を行います。
- 署名アルゴリズムと署名:トークンのalgには、対応している署名アルゴリズムが使用されている必要があります。署名されていないトークン(alg: none)は拒否されます。
- algがRS256の場合、Zoho Directoryは、IdPのディスカバリードキュメント内のjwks_uriから取得した公開鍵を使用して署名を検証します。
- algがHS256の場合、Zoho Directoryはクライアント認証情報を使用して署名を検証します。
- 有効期限:expクレームが存在し、将来の時刻を示している必要があります。
- 発行時刻と有効開始時刻のタイムスタンプ:iatクレームとnbfクレームが将来の時刻を示していないことを確認します。
いずれかの確認に失敗すると、サインインは拒否されます。
7. ユーザーの関連付け
トークンの検証に成功すると、Zoho Directoryは対応するユーザーアカウントを識別し、IdPから受信したユーザー属性をディレクトリユーザーに関連付けます。Zoho Directoryは、subクレーム(IDトークンに含まれる、IdP上のユーザー固有かつ永続的なID)を使用して、IdPのユーザーとディレクトリユーザーを照合します。
- 関連付け済みのユーザー:このIdPユーザー(sub)が以前にサインインしたことがある場合、Zoho Directoryは関連付け済みのアカウントを使用します。
- 初回サインイン:ユーザーが初めてサインインする場合、Zoho DirectoryはIDトークン内のemailに一致するユーザーを検索し、そのユーザーをIdPに関連付けます。
- 一致するユーザーがいない場合:IDトークン内のメールに一致するユーザーがいない場合、Just-In-Time(JIT)プロビジョニングを使用して、トークン内の名前とメールから新しいユーザーが作成されます。JITプロビジョニングが有効になっていない場合、サインインは拒否されます。
- ポリシーの確認:ユーザーが組織に所属し、ユーザーのサインインポリシーにこのIdPが含まれている必要があります。
8. アクセスの許可
ユーザーが識別され、関連付けられると、Zoho Directoryはユーザーのサインインポリシーを確認します。
MFAが必要な場合、ユーザーはセッションが作成される前にMFAを完了する必要があります。その後、Zoho Directoryはブラウザーに独自のサインインセッションを作成します。IDトークンとアクセストークンはサインイン後に破棄され、保存されません。
9. サインアウトフロー
Zoho Directoryからサインアウトしても、終了するのはZohoのセッションのみです。IdP上のユーザーセッションは個別に管理され、Zohoからサインアウトしても終了しません。IdP上のユーザーセッションは有効なままです。完全にサインアウトするには、ユーザーはIdPからもサインアウトする必要があります。