Zendeskは、Secure Assertion Markup Language(SAML)、JSON Webトークン(JWT)、およびOpenID Connect(IODC)を使用したZendeskアカウントへのエンタープライズシングルサインオンアクセスをサポートしています。SSOを使用すると、ユーザーは会社のサインインフォームを使用して一度サインインすることで、Zendesk製品を含む複数のシステムとサービスプロバイダーにアクセスできます。
Zendesk管理者としての役割は、SSOオプションを有効にすることです。この記事では、チームメンバー(管理者と、ライトエージェントと閲覧担当を含むエージェント)、エンドユーザー、またはその両方の認証に使用できる、複数のSAMLシングルサインオン設定を有効にする方法について説明します。
この記事では、次のトピックについて説明します。
- ZendeskでのSAML SSOの動作
- SAML SSOを有効にするための要件
- SAML SSOを有効にする
- SAML SSOをユーザーに割り当てる
- SAML SSOを有効にした後でZendesk内のユーザーを管理する
- 認証方法を切り替える
会社のSAML認証システムの設定と管理は、通常は会社のITチームが担当します。ITチームの役割は、システムにZendesk向けSSOを実装することです。ITチームに、この記事内の以下のトピックをご紹介ください。
関連記事
ZendeskでのSAML SSOの動作
Zendesk対応のSAMLの動作は、SAMLがほかのすべてのサービスプロバイダで動作する場合と同じです。よくあるユースケースは、ユーザー認証をすべてActive DirectoryやLDAPなどの企業認証システム(一般にIDプロバイダまたはIdPと呼ばれます)で管理している会社です。ZendeskはIDプロバイダとの信頼関係を確立し、ユーザーの認証を許可して、Zendeskアカウントにサインインさせることができます。
よくあるユースケースとして、ユーザーが1日の始業時に会社のシステムにサインインする場合があります。いったんサインインすると、それ以降はサインインを求められることなく、他の社内アプリケーションやサービス(メールやZendesk Supportなど)にアクセスすることができます。
ユーザーがZendeskアカウントに直接サインインしようとすると、認証のためにSAMLサーバーまたはサービスにリダイレクトされます。認証されたユーザーは、Zendeskアカウントにリダイレクトされ、自動的にサインイン状態になります。
サポートされているもう1つのワークフローでは、ユーザーが社内のWebサイトにサインインした後に、Zendeskへのアクセス許可を与える方法です。ユーザーがWebサイト認証情報を使用してWebサイトにサインインした場合、ユーザーの検証を求めるリクエストがIDプロバイダに送られます。その後、プロバイダからの応答がSAMLサーバーに送信され、SAMLサーバーから応答がZendeskアカウントに転送されて、ユーザーにZendeskのセッションが割り当てられます。
SAML SSOを有効にするための要件
SAML認証システムを担当している社内のチーム(通常はITチーム)と話し合い、自社が次の要件を満たしていることを確認してください。
- 会社にSAMLサーバーと、プロビジョニングされたユーザーまたはMicrosoft Active DirectoryやLDAPなどのIDリポジトリがある。その他の選択肢として、OpenAMなどの社内SAMLサーバー、Okta、OneLogin、PingIdentityなどのSAMLサービスを使用している。
- Active Directoryフェデレーションサービス(ADFS)サーバーを使用する場合は、フォームベースの認証を有効にする必要があります。ZendeskはWindows統合認証(WIA)をサポートしていません。詳しくは、「Active Directoryを使用したADFSおよびSAMLシングルサインオンの設定」を参照してください。
- Zendeskから送信されるトラフィックはHTTPではなくHTTPS経由です。
- SAMLサーバーのリモートログインURL(SAMLシングルサインオンURLと呼ばれることもある)
- (オプション)ユーザーがZendeskからサインアウトした後に、ZendeskがユーザーをリダイレクトするページのログアウトURL
- (オプション)ユーザーを適切なサインインオプションにリダイレクトするためのIPアドレス範囲のリスト。指定されたIPアドレス範囲から要求を行ったユーザーは、リモートSAMLの認証サインインフォームにルーティングされます。指定されたIPアドレス範囲外から要求を行ったユーザーは、通常のZendeskのサインインフォームにルーティングされます。アドレス範囲を指定しないと、すべてのユーザーがリモート認証のサインインフォームにリダイレクトされます。
- SAMLサーバーから取得したSAML証明書のSHA2指紋。PEM形式またはDER形式のX .509証明書はサポートされていますが、X .509証明書にはSHA 2指紋を指定する必要があります。SHA指紋のサイズに、上限は設定されていません。
ITチームが、ZendeskからSAML実装を設定するための追加情報を必要とする場合があります。その場合は、この記事の実装のためのテクニカルワークシートを参考にしてもらってください。
要件を満たし、必要な情報がすべて揃っていることを確認したら、SAML SSOを有効にすることができます。
SAML SSOを有効にする
管理者は、SAMLシングルサインオンをエンドユーザーのみ、チームメンバーのみ(ライトエージェントと閲覧担当も含む)、または両方のグループに対して有効にすることができます。SAML SSO設定は複数作成できます。設定を開始する前に、必要な情報を会社のITチームから入手します。「SAML SSOを有効にする要件」を参照してください。
SAMLシングルサインオンをZendeskで有効にするには
- 管理センターで、サイドバーの「アカウント」をクリックし、「セキュリティ」>「シングルサインオン」を選択します。
- 「SSO設定を作成する」をクリックし、「SAML」を選択します。
- 一意の構成名を入力します。
- 「SAML SSO URL」に、SAMLサーバーのリモートログインURLを入力します。
- SHA-256の「証明書指紋」を入力します。これは、SAMLサーバーとの通信のために必要です。
- (オプション)「リモートログアウトURL」には、ZendeskからサインアウトしたユーザーがリダイレクトされるページのログアウトURLを入力します。
- (オプション)「IPアドレス範囲」には、ユーザーを適切なサインインオプションにリダイレクトするためのIPアドレス範囲を列挙して入力します。
指定されたIPアドレス範囲から要求を行ったユーザーは、リモートSAMLの認証サインインフォームにルーティングされます。指定されたIPアドレス範囲外から要求を行ったユーザーは、通常のZendeskのサインインフォームにルーティングされます。すべてのユーザーをリモート認証のサインインフォームにリダイレクトしたい場合は、アドレス範囲を指定しないでください。
- 「ユーザーのサインイン時にボタンを表示」を選択し、Zendeskサインインページに「SSOで続行」ボタンを追加します。
「ボタン名」フィールドに値を入力することで、ボタンラベルをカスタマイズできます。カスタムボタンラベルは、サインインページに複数のSSOボタンを追加する場合に便利です。詳細については、「「SSOで続行」ボタンをZendeskサインインページに追加する」を参照してください。
- 「保存」をクリックします。
デフォルトでは、エンタープライズSSO構成は非アクティブです。SSO構成をアクティブにするには、ユーザーに割り当てる必要があります。
SAML SSOをユーザーに割り当てる
SAML SSO設定を作成したら、エンドユーザーかチームメンバー、またはその両方に割り当てることでSSO設定をアクティブにする必要があります。
SSO設定をチームメンバーまたはエンドユーザーに割り当てるには
- チームメンバーまたはエンドユーザーのセキュリティ設定を開きます。
- 認証オプションを表示するには、「外部認証」を選択します。
- 使用するSSO設定の名前を選択します。
シングルサインオンですべてのユースケースがカバーされるわけではないため、Zendesk認証はデフォルトで有効のままとなっています。
- ユーザーにサインインを許可する方法を選択します。
「エンドユーザーが選択」の場合、ユーザーはアクティブな認証方法を使用してサインインすることができます。詳しくは「ユーザーに提供するZendeskへのさまざまなサインイン方法」を参照してください。
「SSOにリダイレクト」では、プライマリのSSO構成を使用した認証のみになります。これらの認証オプションがアクティブであっても、ユーザーには追加のサインインオプションが表示されません。「SSOにリダイレクト」を選択すると、プライマリSSO設定を選択するための「プライマリSSO」フィールドが表示されます。
- 「保存」をクリックします。
SAML SSOを有効にした後でZendesk内のユーザーを管理する
ZendeskでSAMLシングルサインオンを有効にした場合、Zendesk外でユーザーに加えた変更はZendeskアカウントと自動的に同期されません。ユーザーは認証された時点でZendeskで更新されます。たとえば、社内のシステムにユーザーを追加すると、そのユーザーはZendeskにサインインした時点でZendeskアカウントに追加されます。社内システムでユーザーのデータ(名前やメールアドレスなど)に変更が加えられると、SAMLのペイロードで共有されている属性がある場合、それらが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サインインページからパスワードをリセットする必要があります。
実装のためのテクニカルワークシート
このセクションは、SAML認証システムを担当する社内のチームを読者として想定しています。このセクションで、Zendesk SAML SSO実装について詳しく説明します。
次のトピックについて説明します。
認証対象のユーザーを識別するために必要なユーザーデータ
ZendeskアカウントへのSAML SSOアクセスを実装する際には、特定のユーザーデータを指定して、認証対象のユーザーを識別します。
次のトピックでは、入力が必要とされるデータについて説明します。
SAMLサブジェクトの名前IDでのユーザーのメールアドレスを指定する
Zendeskはメールアドレスを使用してユーザーを一意に識別します。SAMLサブジェクトの名前IDには、ユーザーのメールアドレスを指定します。
例:
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">stevejobs@yourdomain.com</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData NotOnOrAfter="2014-04-23T21:42:47.412Z"/>
</saml:SubjectConfirmation>
</saml:Subject>
givenname属性とsurname属性が指定されていない場合、Zendeskは
要素で指定されたメールアドレスのユーザー名をユーザー名として使用します。メールアドレスの「@」記号の前の部分がユーザー名です。
メールアドレスのユーザー名にピリオド記号が含まれている場合は、それを使用して名と姓を解析します。ピリオド記号がない場合は、ユーザー名全体がZendeskのユーザー名になります。たとえば、メールアドレス
がrie.inaba@yourdomain.comの場合、Zendeskでのユーザー名はRie Inabaとなります。ただし、メールアドレスが rieinaba@yourdomain.comの場合、Zendeskでのユーザー名はRieinabaとなります。
SAMLアサーションで2つの必須ユーザー属性を指定する
givennameとsurnameの属性を指定する場合は、フレンドリ名ではなく、完全な名前空間を使用する必要があります。たとえば、フレンドリ名を「surname」とした場合、この属性に指定する実際の値はhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/surnameとなります。
概念 | 属性 | 説明 | 例 |
---|---|---|---|
first name | givenname | ユーザーの名。この属性の完全な名前空間を指定する必要があります。 |
|
last name | surname | ユーザーの姓。Zendeskのユーザーは、このユーザーの名と姓にもとづいて作成または更新されます。以下の例を参照してください。この属性の完全な名前空間を指定する必要があります。 |
|
名と姓の例:
<saml:Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname">
<saml:AttributeValue xsi:type="xs:anyType">James</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname">
<saml:AttributeValue xsi:type="xs:anyType">Dietrich</saml:AttributeValue>
</saml:Attribute>
Zendeskでは、このほかのユーザー属性もサポートします。Supportのデータ要件については、Zendesk Supportの管理者にご相談ください。
追加のユーザーデータを取得する
Zendeskが認証システムに求めるユーザーデータは、ユーザーの姓名とメールアドレスだけです。ユーザーの名前に関する情報を取得するために使用する必要がある属性名は、名前と姓だけです。ただし、ITチームに、サインイン時にIDプロバイダがZendeskに送信するSAMLアサーションへのユーザー属性の追加を依頼することで、より多くのデータを取得できます。
SAMLアサーションには、ユーザーに関する文が1つ以上含まれています。ユーザーがアクセスを許可されているかどうかにかかわらず、承認を決定する文は1つだけです。他の文に、サインインしたユーザーの詳細を示す属性を含めることができます。
属性 | 説明 |
---|---|
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(ロケール)」を参照してください。 |
role | ユーザーのロール。end user、agent、または admin を設定できます。デフォルトはend userです。 |
custom_role_id | ロール属性がエージェント以上の場合にのみ、適用されます。カスタムロールのIDは、カスタムロールAPIを使用して取得できます。 |
external_id | ユーザーがメールアドレス以外の属性で識別されている場合、またはメールアドレスが変更される可能性がある場合に、システムから取得されるユーザーID。文字列として指定します。 |
user_field_<key> | Zendesk Supportのカスタムユーザーフィールドの値。「ユーザープロフィールへのカスタムフィールドの追加」を参照してください。<key>は、Zendesk Supportのカスタムユーザーフィールドに割り当てられたフィールドキーです。例:user_field_employee_number 。ここで、employee_number はZendeskのフィールドキーです。属性値にnull値または空の文字列を送信すると、Zendesk Supportで設定されているカスタムフィールドの値が削除されます。
|
フレンドリ名 | SAML2の名称 |
---|---|
ou (organization unit) | urn:oid:2.5.4.11 |
displayName | urn:oid:2.16.840.1.113730.3.1.241 |
Zendesk用のIDプロバイダを設定する
属性 | 値 |
---|---|
entityID | https://yoursubdomain.zendesk.com |
AudienceRestriction | yoursubdomain.zendesk.com |
両方の値について、your_subdomainをZendesk Supportのサブドメインで置き換えます。サブドメインがわからない場合は、自社のZendesk管理者にお問い合わせください。
ZendeskはAudienceRestriction
属性を適用します。
ZendeskにSAMLサーバーを設定する
一部のSAMLサーバーでは、Zendeskとのインテグレーションの設定時に次のような情報が必要になる場合があります。
- Access Consumer Service (ACS) URL:https://yoursubdomain.zendesk.com/access/saml(大文字と小文字が区別されます)と指定します。「yoursubdomain」にはSupportのサブドメインを入力します。
- SAMLシングルサインオンURLへのリダイレクト:HTTP POSTを使用します。
- ハッシュアルゴリズム(ADFS):Active Directoryフェデレーションサービス(ADFS)を使用する場合、ZendeskではSHA-2アルゴリズムをサポートします。
リモートサインインURLおよびサインアウトURLに返されるパラメータ
ユーザーを認証システムにリダイレクトすると、ZendeskはリモートサインインURLとリモートサインアウトURLに次のパラメータを追加します。
属性 | 説明 |
---|---|
brand_id | ユーザーがサインインを試みたときに表示していたヘルプセンターのブランド。詳しくは「ブランドのヘルプセンターを作成する」を参照してください。 |
属性 | 説明 |
---|---|
サインアウトするユーザーのメールアドレス。 | |
external_id | Zendeskのユーザープロフィールに格納されているシステムの一意の識別子。 |
brand_id | ユーザーがサインアウトしたときに表示していたヘルプセンターのブランド。詳しくは「ブランドのヘルプセンターを作成する」を参照してください。 |
サインアウトURLでメールと外部ID情報を受け取りたくない場合は、Zendeskの管理者に管理インターフェイスの「リモートログアウトURL」フィールドに空白のパラメータを指定するよう依頼してください。「SAML SSOを有効にする」を参照してください。例:https://www.yourdomain.com/user/signout/?email=&external_id=.
RelayStateを使用して認証後にユーザーをリダイレクトする
RelayState
は、SSOプロセス全体を通して元のリクエストの状態を維持するために使用されるパラメータです。これは、SSOプロセスの開始前にユーザーがアクセスしようとしていた元のURLを指定します。SSOプロセスの完了後、ユーザーをRelayState
URLに転送して、シームレスなユーザーエクスペリエンスを提供できます。
RelayState
パラメータはSAMLではオプションです。このパラメータをリクエストに含めない場合、ユーザーはユーザータイプに基づいてデフォルトの場所に移動されます。
- エージェントの場合、デフォルトの場所はZendesk Supportのエージェントダッシュボードです。
- エンドユーザーの場合、デフォルトの場所は、デフォルトブランドのヘルプセンターのホームページです。
SAMLを使ってシングルサインオンが構成されている場合、ユーザーがZendeskのサインインが必要なリンクにアクセスすると、ZendeskはSSOの設定に従ってユーザーをリダイレクトし、その際にユーザーのアクセス元URLをRelayState
パラメータで送信します。
例:
https://zendesk.okta.com/app/zendesk/exladafgzkYLwtYra2r7/sso/saml?RelayState=https%3A%2F%2Fyoursubdomain.zendesk.com%2Fagent%2Ffilters%2F253389123456&brand_id=361234566920&SAMLRequest=[samlloginrequesthere]
SAML認証リクエストを構築する際にRelayState
パラメータを追加し、その値をSAMLレスポンスでZendeskから送られたURLに設定します。
ユーザーをhttps://yoursubdomain.zendesk.com/agent/filters/253389123456にリダイレクトするRelayState
パラメータの例:
SAMLResponse=[SAMLpayloadhere]&RelayState=https%3A%2F%2Fyoursubdomain.zendesk.com%2Fagent%2Ffilters%2F253389123456
ZendeskのSAML設定のトラブルシューティング
以下はZendeskのSAML 2.0のメタデータです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EntityDescriptor entityID="https://yoursubdomain.zendesk.com" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
<AssertionConsumerService index="1" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://yoursubdomain.zendesk.com/access/saml"/> <!-- Note: replace 'accountname' with your Zendesk subdomain -->
</SPSSODescriptor>
</EntityDescriptor>
Zendeskに渡されるSAMLアサーションは以下のようになります。
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="s2202bbbb
afa9d270d1c15990b738f4ab36139d463" InResponseTo="_e4a78780-35da-012e-8ea7-005056
9200d8" Version="2.0" IssueInstant="2011-03-21T11:22:02Z" Destination="https://yoursubdomain.zendesk.com/access/saml">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">myidp.entity.id
</saml:Issuer>
<samlp:Status xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<samlp:StatusCode xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Value="urn:oasis:names:tc:SAML:2.0:status:Success">
メモ:Destination
属性の「accountname」を自社のZendeskのサブドメインで置き換えます。
Zendeskは、アサーションの属性文(
)でユーザー属性が指定されると想定しています。
<saml:AttributeStatement>
<saml:Attribute Name="organization">
<saml:AttributeValue xsi:type="xs:string">Acme Rockets</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="tags">
<saml:AttributeValue xsi:type="xs:string">tag1 tag2</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="phone">
<saml:AttributeValue xsi:type="xs:string">555-555-1234</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="role">
<saml:AttributeValue xsi:type="xs:string">agent</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="custom_role_id">
<saml:AttributeValue xsi:type="xs:string">12345</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
Zendeskでサポートされるユーザー属性の名前と説明については、上述の「追加のユーザーデータを取得する」の表を参照してください。オプションのユーザー属性では、完全な名前空間はサポートされていないことに注意してください。