TeamViewerシングルサインオン(SSO)は、TeamViewerをアイデンティティプロバイダおよびユーザーディレクトリに接続することによって、大企業のユーザー管理作業効率を向上することを目的としています。

この記事は、TeamViewer Tensor (Classic)を利用するEnterprise/Tensorライセンスをお持ちのお客様に適用されます。

必要条件

TeamViewerシングルサインオンを使用するには、次のものが必要です。

  • TeamViewerバージョン13.2.1080以降
  • SAML 2.0互換IDプロバイダー(IdP)*
  • Management Consoleにアクセスしてドメインを追加するためのTeamViewerアカウント
  • ドメインの所有権を確認するためのドメインのDNS管理へのアクセス
  • TeamViewer Tensorライセンス

TeamViewer Management Console (MCO) の設定

シングルサインオン(SSO)は、このドメインのメールアドレスを使用して、すべてのTeamViewerアカウントに対してドメインレベルで有効になります。有効化されると、対応するTeamViewerアカウントにサインインするすべてのユーザーは、そのドメイン用に構成されているIDプロバイダーにリダイレクトされます。

セキュリティ上の理由から、また悪用を防ぐために、機能を有効にする前にドメインの所有権を確認する必要があります。

新しいドメインの追加

SSOを有効にするには、Management Consoleにログインして[シングルサインオン]メニューエントリを選択します。 [ドメインの追加] をクリックして、SSOを有効にするドメインを入力します。

また、アイデンティティプロバイダのメタデータも提供する必要があります。これを行うには、3つの方法があります。

  • URL経由:IdPメタデータURLを対応する欄に入力します。
  • XML経由:メタデータXMLを選択してアップロードします。
  • 手動設定:必要な情報をすべて手動で入力します。公開鍵はBase64でエンコードされた文字列でなければならないことに注意してください。

カスタム識別子を作成する

ドメインを追加した後、カスタム識別子を生成できます。このカスタム識別子(custom identifier)はTeamViewerによって保存されませんが、SSOの初期設定に使用されます。シングルサインオンが無効になり、新しい設定が必要になるため、どの時点でも変更しないでください。任意のランダムな文字列を顧客IDとして使用できます。この文字列は、IdPの設定に後で必要になります。

ドメインの所有権の確認

ドメインが正常に追加されたら、ドメインの所有権を確認する必要があります。ドメインの検証が完了するまで、シングルサインオンは有効になりません。

ドメインを確認するには、確認ページに表示されている値を使用して、ドメイン用の新しいTXTレコードを作成してください。

📌注意: 検証プロセスはDNSシステムが原因で数時間かかる場合があります。

TXTレコードを追加するダイアログは、次のようになります。

📌注意: ドメイン管理システムによっては、入力フィールドの説明が異なる場合があります。

新しい TXT レコードを作成したら、[検証の開始] ボタンをクリックして検証プロセスを開始します。

📌注意: 検証プロセスは、DNSシステムが原因で数時間かかる場合があります。

💡ヒント: TeamViewerは、検証開始後24時間でTXT検証レコードを探します。 24時間以内にTXTレコードが見つからない場合、検証は失敗し、それに応じてステータスが更新されます。この場合、このダイアログで確認を再開する必要があります。

💡ヒント2: シングルサインオン用のドメインを追加するときは、所有アカウントを除外リストに追加することをお勧めします。その理由は、IdPが機能していなくてもドメイン設定へのアクセスを維持するというフォールバックシナリオです。

例:TeamViewerアカウント「[email protected]」は、シングルサインオン用のドメイン「example.com」を追加します。ドメインを追加したら、メールアドレス「[email protected]」を除外リストに追加する必要があります。 これは、構成の誤りによりシングル サインオンが機能しない場合でも、SSO 構成を変更するために必要です。

💡ヒント 3: シングル サインオン用のドメインを追加する場合、SSO の所有権は社内に継承されないため、SSO ドメインに所有者を追加することをお勧めします。

例: TeamViewer アカウント "[email protected]" がシングル サインオン用のドメイン "example.com" を追加した後、複数の会社の管理者 (例: "[email protected]") をドメイン所有者として追加し、ドメインとその SSO 設定も管理できるようにします。

Active Directoryフェデレーションサービス(ADFS)用のIDプロバイダの設定

次の手順では、Active Directoryフェデレーションサービス(ADFS)の設定手順について説明します。指示とコマンドは、Windows Server 2016 Standard(バージョン1607)を実行しているマシンから取得されています。

構成は基本的に次の2つのステップで構成されています。

1) TeamViewerシングルサインオンサービス用のADFS証明書利用者信頼を追加します。このステップでは、TeamViewer SSOサービスのメタデータを入力する必要があります。これは、次のいずれかの方法で実行できます。

  • 自動:メタデータXMLファイルへのURLを入力するだけです。ファイルはADFSによってダウンロードされ、信頼当事者信頼のすべての必須フィールドは自動的に記入されます。インターネットにアクセスするには、ADFSサーバーが必要です。
  • 半自動:自動方式と似ていますが、メタデータへのURLを提供する代わりに、ファイル自体が事前にダウンロードされ、XMLファイルとしてADFSに渡されます。これは、ADFSサーバーがインターネットにアクセスできない場合に便利です。
  • 手動:上記の方法のいずれにも該当しない場合は、メタデータを手動でADFSに入力できます。

2) 新しい証明書利用者信頼のクレーム発行ポリシーに変換規則を追加します。

以下のセクションでは、PowerShellコマンドプロンプトとADFS管理グラフィカルユーザーインターフェイスを使用した3つのシナリオすべての構成について説明します。

PowerShellを使用した自動設定

新しいPowerShellコマンドウィンドウを開き、次のコマンドを入力して、既定のクレーム発行ポリシーを使用して新しい証明書利用者の信頼をADFSに追加します。

$customerId = 'Your Generated Customer Identifier'
$claimRules = @'
@RuleTemplate = "LdapClaims"
@RuleName = "TeamViewer Login"
c:[Type ==
"http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types =
("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query =
";objectGUID,mail;{0}", param = c.Value);
@RuleName = "TeamViewer Customer ID"
=> issue(Type = "http://sso.teamviewer.com/saml/claims/customeridentifier",
Value = "
'@ + $customerId + '");'
Add-AdfsRelyingPartyTrust `
-Name TeamViewer `
-MetadataUrl https://sso.teamviewer.com/saml/metadata.xml `
-IssuanceTransformRules $claimRules `
-AccessControlPolicyName "Permit everyone" `
-AutoUpdateEnabled $true `
-MonitoringEnabled $true `
-Enabled $true

必要に応じて "-Name"パラメータ値(13行目)を変更します。これは、ADFSのグラフィカルユーザーインターフェイスに表示される名前です。また、アクセス制御ポリシーの名前(16行目)もシステムによって異なる場合があります。

すべての設定は、後でPowerShellまたはADFSのグラフィカルユーザーインターフェイスを介して変更できます。

PowerShellを使用した半自動設定

これは、上記の「自動」方式と非常によく似ています。事前にメタデータXMLファイルをダウンロードし、それをADFSサーバーにコピーする必要があります。

メタデータファイルは次のURLからダウンロードできます。

https://sso.teamviewer.com/saml/metadata.xml

次のコマンドは、メタデータXMLファイルがPowerShellコマンドプロンプトの現在のディレクトリに "metadata.xml"として存在することを前提としています。

$customerId = 'Your Generated Customer Identifier'
$claimRules = @'
@RuleTemplate = "LdapClaims"
@RuleName = "TeamViewer Login"
c:[Type ==
"http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types =
("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query =
";objectGUID,mail;{0}", param = c.Value);
@RuleName = "TeamViewer Customer ID"
=> issue(Type = "http://sso.teamviewer.com/saml/claims/customeridentifier",
Value = "
'@ + $customerId + '");'
Add-AdfsRelyingPartyTrust `
-Name TeamViewer `
-MetadataFile metadata.xml `
-IssuanceTransformRules $claimRules `
-AccessControlPolicyName "Permit everyone" `
-Enabled $true

「自動」方式との主な違いは、 " - MetadataUrl"の代わりに " - MetadataFile"パラメーターを使用することです(14行目)。有効なメタデータURLを指定する必要があるため、 " - AutoUpdateEnabled"および " - MonitorEnabled"パラメータは省略されています。

Powershellを使った手動設定

手動設定では、TeamViewer SAMLサービスプロバイダの署名/暗号化証明書の公開鍵をダウンロードして抽出する必要があります。

証明書利用者信頼を手動で追加するには、PowerShellコマンドプロンプトで次のコマンドを実行します。

$customerId = 'Your Generated Customer Identifier'
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(".\sso.teamviewer.com - saml.cer", "")
$claimRules = @'
@RuleTemplate = "LdapClaims"
@RuleName = "TeamViewer Login"
c:[Type ==
"http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types =
("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query =
";objectGUID,mail;{0}", param = c.Value);
@RuleName = "TeamViewer Customer ID"
=> issue(Type = "http://sso.teamviewer.com/saml/claims/customeridentifier",
Value = "
'@ + $customerId + '");'
$samlEndpoints = @(
(New-AdfsSamlEndpoint -Binding POST -Protocol SAMLAssertionConsumer -Uri https://sso.teamviewer.com/saml/acs -Index 0),
(New-AdfsSamlEndpoint -Binding Redirect -Protocol SAMLAssertionConsumer -Uri https://sso.teamviewer.com/saml/acs -Index 1)
)
Add-AdfsRelyingPartyTrust `
-Name "TeamViewer" `
-Identifier "https://sso.teamviewer.com/saml/metadata" `
-RequestSigningCertificate $cert `
-EncryptionCertificate $cert `
-SamlEndpoint $samlEndpoints `
-IssuanceTransformRules $claimRules `
-AccessControlPolicyName "Permit everyone" `
-Enabled $true

 

また、 ""Add-AdfsRelyingPartyTrust" PowerShellコマンドレットの公式ドキュメントもご覧ください。 https://technet.microsoft.com/en-us/library/ee892322.aspx

ADFS管理ツールを使用した半自動構成(グラフィカル)

1) サーバーマネージャー(Server Manager)からADFS管理ツールを起動します。

2) [ADFS]  [証明書利用者信頼(Relying Party Trusts)]に移動し、右側のナビゲーションウィンドウで[証明書利用者信頼の追加(Add Relying Party Trust)]をクリックします。

3)[クレーム対応] を選択し、[スタート]ボタンをクリックしてウィザードを起動します。

4) 自動バリアントと半自動バリアントのどちらを使用するかに応じて、

  • URLを介してメタデータをインポートします。
  • メタデータのURLを入力します:https://sso.teamviewer.com/saml/metadata.xmlメタデータをファイル経由でインポートします。ダウンロードしたメタデータXMLファイルを参照してください。ファイルは上記のURLからダウンロードできます。

5) 証明書利用者信頼の名前 (TeamViewer sso.teamviewer.com など) を選択するか、必要に応じて事前入力された名前を選択します。

6) 証明書利用者信頼のアクセス制御ポリシーを選択します。例) 全員許可を選択します。

7) 概要画面で[次へ]をクリックして、証明書利用者信頼を追加します。

次に、クレーム発行ポリシーを新しい信頼当事者に対して構成する必要があります。

1.証明書利用者の信頼を選択し、右側のナビゲーションウィンドウで[請求発行ポリシーの編集...(Edit Claim Issuance Policy...)]をクリックします。

2.[ルールの追加]をクリックして[クレームとしてLDAP属性を送信]を選択します。

3.変換規則の名前を入力してください。 例) TeamViewerログイン

4.属性ストアとしてActive Directoryを選択します。

5.次の2つのマッピングを追加してください。

LDAP attribute Outgoing claim type Remarks

objectGUID

Name ID

Enter the value of the LDAP Attribute field manually.

You may need to click on the dropdown arrow first, before starting to type.

E-mail addresses

E-mail addresses

-

6.完了(Finish)をクリックします。

7. もう一度[規則の追加(Add Rule)]を追加して2番目の要求規則を追加し、[カスタム規則を使用して要求を送信(Send Claims Using a Custom Rule)]を選択します。

8. カスタムクレームルールの名前を入力します。 例) TeamViewerのお客様ID

9. 次のカスタムルールを入力し、[値]を生成した顧客IDに設定します。必ず生成された顧客識別子を値フィールドに追加してください。

=> issue(Type = "http://sso.teamviewer.com/saml/claims/customeridentifier", Value = "Your Generated Customer Identifier");

10. 完了(Finish)をクリックします。

ADFS管理ツールを使用した手動構成(グラフィカル)

手動設定では、TeamViewer SAMLサービスプロバイダの署名/暗号化証明書の公開鍵をダウンロードして抽出する必要があります。

証明書の入手方法については、下記の「技術情報」セクションを参照してください。

1. サーバーマネージャーからADFS管理ツールを起動します。

2. [ADFS - 証明書利用者信頼(Relying Party Trusts)]に移動し、右側のナビゲーションウィンドウで[証明書利用者信頼の追加(Add Relying Party Trust...)]をクリックします。

3. [クレーム対応]を選択し、[スタート]ボタンをクリックしてウィザードを起動します。

4. データを手動で入力する場合に選択します。(3番目の箇条書き)

5. TeamViewer sso.teamviewer.com などの証明書利用者信頼の名前を選択するか、必要に応じて事前入力された名前を選択します。

6. 証明書ファイルを参照します。(上記のコメントを参照)

7. [SAML 2.0 WebSSOプロトコルのサポートを有効にする(Enable support for the SAML 2.0 WebSSO protocol)] チェックボックスをオンにして、次のサービスURLを入力します。https://sso.teamviewer.com/saml/acs

8. [識別子の構成(Configure Identifiers)]ページで、https://sso.teamviewer.com/saml/metadataを識別子として追加します。

9. 証明書利用者信頼を追加することを確認します。

10. 上記の自動手順の説明に従って、クレーム発行ポリシーを構成します。

11. 次に、証明書利用者信頼の署名証明書を設定します。そのため、プロパティをダブルクリックして開き、[署名(Signature)]タブに移動します。上記と同じ証明書ファイルを参照します。

12. オプションで、証明書利用者信頼に2番目のSAMLエンドポイントを追加します。 [エンドポイント(Endpoints)]タブに移動して[SAMLエンドポイントの追加(Add SAML endpoint)]をクリックします。

  • エンドポイントタイプとして[SAMLアサーションコンシューマー(SAML Assertion Consumer)]を選択します。
  • バインドとしてリダイレクト(Redirect)を選択します。
  • インデックスを1に設定します。
  • 信頼済みURLをhttps://sso.teamviewer.com/saml/acsに設定します。

TeamViewerクライアント構成

TeamViewerは、バージョン13.2.1080からシングルサインオンと互換性があります。

以前のバージョンはシングルサインオンをサポートしていないため、ログイン中にユーザーをIDプロバイダーにリダイレクトすることはできません。

クライアント構成はオプションですが、IdPのSSOログインに使用するブラウザを変更することができます。

TeamViewerクライアントは、デフォルトでアイデンティティプロバイダの認証に埋め込みブラウザを使用します。オペレーティングシステムのデフォルトブラウザを使用したい場合は、次のレジストリキーを使用してこの動作を変更することができます:

Windows:

HKEY_CURRENT_USER\Software\TeamViewer\SsoUseEmbeddedBrowser = 0 (DWORD)

 macOS:

defaults write com.teamviewer.teamviewer.preferences SsoUseEmbeddedBrowser -int 0

📌注意: レジストリを作成または変更した後は、TeamViewerクライアントを再起動する必要があります。