OpenID Connect(OIDC)は、OAuth 2.0フレームワークに基づいて構築された認証プロトコルです。開発者は、このプロトコルを使用して、安全かつ標準化された方法でユーザーを認証し、プロフィールの基本情報を取得することができます。OIDCは、認証サーバーによって実行された認証に基づいてユーザーの身元を確認するためにIDトークンを使用し、ユーザーIDの管理プロセスを簡素化し、ユーザーとアプリケーション間の相互作用のセキュリティを強化します。
OIDCによるZendeskのシングルサインオン(SSO)は、ユーザーにZendeskのログイン認証情報を個別に管理させるのではなく、GoogleやOktaのような一元的なIDプロバイダー(IdP)を使用してサインインできるようにすることで、認証プロセスを簡素化します。
関連記事:
ZendeskでのOIDC SSOの動作
OIDC SSOにより、ユーザーは標準プロトコルを使用してIdPで認証することができます。認証されると、IdPはIDトークンを発行し、そのIDトークンによってユーザーの身元とアクセス権限が検証されます。
OIDCによるZendesk SSOプロセスの流れ:
- 認証されていないユーザーがZendesk Support URLにアクセスします。例:https://yoursubdomain.zendesk.com/
- サインインワークフローに応じて、ユーザーはZendeskのサインインページでボタンをクリックしてSSOでサインインすると、IdPに誘導されるか、自動的にIdPにリダイレクトされてサインインします。
- ユーザーが認証に成功すると、IdPはユーザー固有の情報を含むIDトークンを生成します。
- トークンはZendeskに返送され、ZendeskとIdPとの間で共有されている設定詳細と照合されます。
- 検証に成功すると、ZendeskはIdPによって確立された信頼を活用して、ユーザーにアクセスを許可します。
重要な注意事項
- OIDC SSOを使用してZendeskにサインインできない場合、IDプロバイダー(IdP)とその設定に問題がある可能性があります。システム管理者またはITチームに連絡して、IdPの設定を確認し、その要件を検討することが欠かせません。
- メッセージングでは、OIDCによるユーザー認証はできません。
- Zendeskでは、すべてのユーザーがプロフィールに関連付けられたメールアドレスを持っている必要がありますが、ユーザーがメールアドレスなしにサインインしようとすることがあります。このシナリオでは、メールアドレスが見つからないために認証に失敗するというループに陥るのを防ぐために、Zendeskがエラーメッセージを表示します。
- EntraでOIDCを使用する場合は、特定の要件をいくつか設定する必要があります。
- 認証モードはPKCEでなければならない。
- Entra OIDCのPKCE設定フォームの「Mobile and desktop applications - Redirect URIs」に折り返し電話URLを追加する。
OIDC SSOの設定を作成する
管理者は、OIDCシングルサインオンをエンドユーザーまたはチームメンバー(ライトエージェントと閲覧担当も含む)の片方のみ、または両方のグループに対して有効にすることができます。OIDC SSOの設定は複数作成できます。
このステップに必要な情報は、使用しているIdPから取得する必要があるため、開始する前にIdPがセットアップされていることを確認してください。会社のITチームから情報を入手する必要があります。
ZendeskでOIDC SSOの設定を作成するには
- 管理センターで、サイドバーの「アカウント」をクリックし、「セキュリティ」>「シングルサインオン」を選択します。
- 「SSO設定を作成する」をクリックし、「OpenID Connect」を選択します。
- 一意の構成名を入力します。
- (オプション)「IPアドレス範囲」には、ユーザーを適切なサインインオプションにリダイレクトするためのIPアドレス範囲を列挙して入力します。
所定のIPアドレス範囲から要求を行ったユーザーは、リモートOIDCの認証サインインフォームにルーティングされます。所定のIPアドレス範囲外から要求を行ったユーザーは、標準のZendeskのサインインフォームにルーティングされます。すべてのユーザーをリモート認証のサインインフォームにリダイレクトしたい場合は、アドレス範囲を指定しないでください。
- 「Client ID」フィールドに、IdPから提供されたクライアントIDを入力します。
-
クライアントシークレットを入力します(IdPから要求された場合)。
クライアントシークレットは秘密にしておく必要があるため、設定を保存した後、再び完全なシークレットが表示されることはありません。シークレットを変更する必要がある場合は、このSSOの設定を編集して新しいシークレットを入力し、保存してください。
- 「スコープ」フィールドに、IdPに要求するすべてのスコープを続けて入力します。リストには、少なくとも
openid
とemail
を入れる必要があります。各スコープはスペースで区切り、カンマは使用しません。以下はその例です。openid email phone
OIDC規格では、
openid
、profile
、email
、address
、phone
のスコープがサポートされています。また、IdPに設定されているカスタムスコープがあれば、それらもリストに加えることができます。IdPに受理を拒否されたスコープがあるとサインインに失敗し、
Unknown error during sign-in
というエラーメッセージが表示されます。Zendeskはこのフィールドのいずれのスコープも検証を行いません。 - 発行者URLを提供したいだけの場合は、「自動検出を有効にする」を選択します。この機能を有効にすると、ZendeskはOIDC設定ドキュメントから設定情報を自動的に抽出します。ここで必要なのは、発行者URLと認証モードの情報だけです。
- 必要なURLを入力します。
ご利用のIDプロバイダー(IdP)が、使用するURLに特定のフォーマットを要求しているかどうかを確認してください。URLのフォーマットが正しくなく、IdPによって拒否された場合、サインインに失敗し、エラーメッセージ「
Unknown error during sign-in
」が表示されることがあります。Zendeskは、これらのフィールドのURLについては検証しません。- 発行者URL(発行者IDとも呼ばれる):ユーザー認証を実行し、IDトークンを発行するIdPの一意の識別子。
- UserInfoのURL:IdPが提供するエンドポイント。有効なアクセストークンでアクセスすると、認証されたユーザーに関する属性が返されます。
- JWKs URL:IdPが提供するエンドポイント。プロバイダーの公開鍵をZendeskが取得できるようにします。これらの鍵は、IdPが発行するJSON Webトークン(JWT)の署名を検証するために使用されます。
- 認証URL:ユーザーがこのURLにアクセスすると、サインインして要求されたスコープに同意するように求められます。
- アクセストークンURL(トークンエンドポイントURLとも呼ばれる):アクセストークンと認証コード、クライアントID、クライアントシークレットを交換するために使用します。
-
認証モードを選択します。推奨されるモードはPKCEです。
- アクセストークンの取得にPKCEを使用するのは、モバイルやJavascript Webアプリのようなパブリッククライアントには最適です。これは、動的に生成される鍵を使用するため、クライアントシークレットを必要とせずに不正なトークンの交換を防ぐことができるからです。
- 認証コードフローを使用してアクセストークンを取得する場合は、「認証コードフロー」を選択してください。これは、トークンの取得にクライアントシークレットを使用する、セキュアなバックエンドストレージを備えたサーバーベースのアプリケーションに最適です。
-
ユーザーにサインイン方法を選択させ、この設定をユーザーが選択できるオプションに含める場合は、「ユーザーのサインイン時にボタンを表示」を選択します。このオプションを選択した場合、Zendeskのサインインページに表示されるボタンに名前を付ける必要があります。
ユーザーがサインインにIDプロバイダーを使用するだけの場合は、Zendeskのサインインページを使用しないため、このチェックボックスの選択を解除します。
- 「保存」をクリックします。
デフォルトでは、エンタープライズSSO構成は非アクティブです。エンタープライズSSOの構成をアクティブにするには、OIDC SSOをユーザーに割り当てる必要があります。
OIDC SSOをユーザーに割り当てる
OIDC SSO設定を作成したら、エンドユーザーかチームメンバー、またはその両方に割り当てることでSSO設定をアクティブにする必要があります。
SSO設定をチームメンバーまたはエンドユーザーに割り当てるには
- チームメンバーまたはエンドユーザーのセキュリティ設定を開きます。
- 認証オプションを表示するには、「外部認証」を選択します。
- 使用するSSO設定の名前を選択します。
シングルサインオンですべてのユースケースがカバーされるわけではないため、Zendesk認証はデフォルトで有効のままとなっています。
- ユーザーにサインインを許可する方法を選択します。
「エンドユーザーが選択」の場合、ユーザーはアクティブな認証方法を使用してサインインすることができます。詳しくは「ユーザーに提供するZendeskへのさまざまなサインイン方法」を参照してください。
「SSOにリダイレクト」では、プライマリのSSO構成を使用した認証のみになります。これらの認証オプションがアクティブであっても、ユーザーには追加のサインインオプションが表示されません。「SSOにリダイレクト」を選択すると、プライマリSSO設定を選択するための「プライマリSSO」フィールドが表示されます。
- 「保存」をクリックします。
OIDC SSOを有効にした後でZendesk内のユーザーを管理する
ZendeskでOIDCシングルサインオンを有効にした場合、Zendesk外でユーザーに加えられた変更はZendeskアカウントと自動的には同期されません。ユーザーは認証された時点でZendeskで更新されます。たとえば、社内のシステムにユーザーを追加すると、そのユーザーはZendeskにサインインした時点でZendeskアカウントに追加されます。社内システムでユーザーが削除された場合、そのユーザーはZendeskにサインインできなくなります。ただし、アカウントはZendeskに残されます。
デフォルトでは、シングルサインオンが有効になっている場合にZendeskに保存される唯一のユーザーデータは、ユーザーの名前とメールアドレスです。Zendesk内にパスワードは保管されません。このため、パスワードに関するZendeskからの自動メール通知はすべてオフにする必要があります。
Zendeskからのパスワード通知メールをオフにする
SAML、JWT、またはOpenID Connect(OIDC)のいずれかのシングルサインオンを使用してZendeskアカウントにアクセスしたすべての新規ユーザーに、ユーザープロフィールが作成されます。これらのユーザーはZendesk以外のパスワードを使用するIdPによって認証されるため、Zendeskに直接サインインする必要がありません。このため、パスワードなしでプロフィールが作成されます。
SSOを使ってZendeskにサインインした新規ユーザーは、IdPによって認証されるため、アカウント確認のメール通知を受け取ることはありません。ただし、IdPがユーザーを確認できなかった場合にメール通知が自動送信されないよう、これらの自動メール通知をオフにすることが推奨されます。SSOを使用する場合、ユーザー認証は常にIdPによって行われなければなりません。
パスワード通知メールをオフにするには
- 管理センターで、サイドバーのメンバーアイコン()をクリックし、「設定」>「エンドユーザー」を選択します。
- 「アカウントメール」セクションの「エージェントまたは管理者によって新規ユーザーが登録されたときにも登録完了通知メールを送信する」の選択を解除します。
- 「ユーザーが各自のパスワードを変更できるようにする」で、このオプションの選択を解除します。
認証方法を切り替える
サードパーティのSSOメソッドを使用してZendeskでユーザーを作成および認証した後、Zendesk認証に切り替えるた場合、これらのユーザーはログインに使用できるZendeskパスワードを持たないことになります。これらのユーザーがZendeskにアクセスできるようにするには、Zendeskサインインページからパスワードをリセットする必要があります。
Zendeskでサポートされる属性
-
標準の属性は、OIDCプロトコルによって指定され、広く受け入れられているプリセット属性であり、異なるシステム間でユーザーIDの共通理解が保証されています。Zendeskでサポートされている標準の属性として、
sub
、email
、email_verified
およびlocale
などがあります。 - Zendesk固有の要件を満たすために、カスタム属性を追加して、標準セットを拡張することができます。カスタム属性は、IDトークンまたはuserinfoクレームで渡すことができます。
以下の表に、Zendeskでサポートされる標準属性とカスタム属性を示します。
属性 | 説明 |
---|---|
name | エンドユーザーのロケールや好みに応じた順番で、名前のすべての部分(場合によってはタイトルや接尾辞)を含む、表示可能な形式のユーザーのフルネーム。 |
ユーザーのメインのメールアドレス。 | |
email_verified | ユーザーのメールアドレスが検証された場合はTrue、検証されない場合はFalse。この属性値がTrueの場合、検証の実行時に、このメールアドレスがユーザーによって確実に管理されるようにするために、OpenIDプロバイダーが肯定的な手段を講じたことを意味します。ZendeskでSSOを使用する場合、ユーザーのメールアドレスの検証はユーザー自身が行います。 |
organization | ユーザーが所属する組織の名前またはID。組織のexternal_id属性は、サポートされません。組織がZendeskに存在しない場合、作成されません。ユーザーは作成されますが、どの組織にも追加されません。 |
organizations | カンマ区切りで値を列挙。例:org1 、org2 、org3
|
organization_id |
Zendesk APIで使用する組織の外部ID。organizationとorganization_idの両方が指定されている場合、organizationは無視されます。 例: 複数の組織IDを同時に渡す場合は、代わりにorganizations_ids属性を使用します。組織IDは、カンマで区切った文字列として渡す必要があります。 |
organization_ids |
Zendesk APIで使用する組織の外部ID。複数の組織IDを同時に渡す場合は、この属性を使用します。organizationsとorganization_idsの両方が指定されている場合、organizationsは無視されます。 以下に例を示します。カンマ区切りで値を列挙。例: |
phone | 文字列として指定された電話番号。 |
tags | ユーザーに設定されているタグ。これらのタグは、ユーザープロフィール内にすでにタグがある場合、それらのタグを上書きします。 |
remote_photo_url | ユーザープロフィールに設定される写真のURL。 |
locale(エージェントの場合) locale_id(エンドユーザーの場合) |
数値で指定するZendesk内のロケール。有効な数値のリストを入手するには、APIドキュメントで「Locales(ロケール)」を参照してください。 |
zendesk_role | ユーザーのロール。end-user、agent、またはadminを設定できます。zendesk_roleを渡さなかった場合、Zendeskはそのユーザーをエンドユーザーとして作成します。 |
custom_role_id | role属性がagent以上の場合にのみ、適用されます。カスタムロールのIDは、カスタムロールAPIを使用して取得できます。 |
external_id | ユーザーがメールアドレス以外の属性で識別されている場合、またはメールアドレスが変更される可能性がある場合に、システムから取得されるユーザーID。文字列として指定します。 |
user_field_<key> | Zendesk Supportのカスタムユーザーフィールドの値。「ユーザープロフィールへのカスタムフィールドの追加」を参照してください。<key>は、Zendesk Supportのカスタムユーザーフィールドに割り当てられたフィールドキーです。例:user_field_employee_number 。ここで、employee_number はZendeskのフィールドキーです。属性値にnull値または空の文字列を送信すると、Zendesk Supportで設定されているカスタムフィールドの値が削除されます。 |