[Sitecore][Active Directory]サイトコアのアクティブディレクトリモジュールのセットアップ

概要:

クティブディレクトリモジュールのセットアップ中に見かけるトラブルシューティングのメモ書き

———————————————————————————————

検証環境は次の通りです。

 

毎日仕事が忙しくてなかなかちゃんとしたブログを書く時間がなくていらいらしております。

今回、サイトコアのアクティブディレクトリモジュールのセットアップについては、下記のようにネッとって多くのブログがあります。以前のバージョンのサイトコアのアクティブディレクトリモジュールも何回かセットアップしたことがあり、ログインさえ正しいであれば、簡単に接続ができます。今回のセットアップでちょっと手間がかかり、ブログ・メモ書きとして、もっと設置を深く、問題が発生する際にどのような手順でトラブルシューティングするのを書いています。

まず、サイトコアのアクティブディレクトリモジュールのセットアップについてネットでたくさんの記事が書かれています。

また、アクティブディレクトリモジュールのセットアップガイドも詳細に書かれいます。

https://dev.sitecore.net/Downloads/Active_Directory/1_3/Active_Directory_1_3.aspx#

基本的にアクティブディレクトリモジュールをインストール後、下記の設定を行います。

私はサイトコアhabitatベースのソリューション使っているので、transformファイルを追加また、

修正し、gulpタスクをはしらせばいいです。

GITHUBへ追加してそしてリンクする

Sitecore.config.transform

<?xml version="1.0"?>
<sitecore database="SqlServer" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <!-- SWITCHING PROVIDERS -->
  <switchingProviders>
    <membership>
      <provider providerName="ad" xdt:Locator="Match(providerName)" xdt:Transform="InsertIfMissing" storeFullNames="false" wildcard="*" domains="ad" />
    </membership>
    <roleManager>
      <provider providerName="ad" xdt:Locator="Match(providerName)" xdt:Transform="InsertIfMissing" storeFullNames="false" wildcard="*" domains="ad" />
    </roleManager>
    <profile>
      <provider providerName="ad" xdt:Locator="Match(providerName)" xdt:Transform="InsertIfMissing" storeFullNames="false" wildcard="*" domains="ad" />
    </profile>
  </switchingProviders>
  <!-- MEDIA PATH -->
</sitecore>

domains.config.transform

<?xml version="1.0" encoding="utf-8"?>
<domains xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">  
  <domain xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"  name="ad" ensureAnonymousUser="false" />    
</domains>

web.config.transform

<system.web>
	<membership defaultProvider="sitecore" hashAlgorithmType="SHA1">
		<providers>
			<add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="switcher" providerWildcard="%" raiseEvents="true" xdt:Locator="Match(name)" xdt:Transform="Replace" />
			<add name="switcher" type="Sitecore.Support.Security.SwitchingMembershipProvider, Sitecore.Support.139945" applicationName="sitecore" mappings="switchingProviders/membership"  xdt:Locator="Match(name)" xdt:Transform="Replace" />
			<add name="ad" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" 
				 type="LightLDAP.SitecoreADMembershipProvider" 
				 connectionStringName="ManagersConnString" 
				 applicationName="sitecore" 
				 minRequiredPasswordLength="1" 
				 minRequiredNonalphanumericCharacters="0" 
				 requiresQuestionAndAnswer="false" 
				 requiresUniqueEmail="false" 
				 connectionUsername="sandbox\ServiceUser" 
				 connectionPassword="password" 
				 connectionProtection="Secure" 
				 attributeMapUsername="sAMAccountName" 
				 enableSearchMethods="true" />
		</providers>
	</membership>
	<roleManager defaultProvider="sitecore" enabled="true">
		<providers>
			<add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="switcher" raiseEvents="true" xdt:Transform="Replace" />
			<add name="ad" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" 
				 type="LightLDAP.SitecoreADRoleProvider" 
				 connectionStringName="ManagersConnString" 
				 applicationName="sitecore" 
				 username="sandbox\ServiceUser" 
				 password="password#" 
				 attributeMapUsername="sAMAccountName" 
				 cacheSize="2MB" />
		</providers>
	</roleManager>
</system.web>

この設定にて唯一アクティブディレクトリモジュールのセットアップガイドにて書かれていないのは
ログインする際に下記のエラーのパッチが含まれています。

20190924_01

記事:https://kb.sitecore.net/articles/520134

エラー:

Exception: System.ArgumentException

Message: The provider user key supplied is invalid.  It must be of type System.Guid.

Parameter name: providerUserKey

パッチファイルをダウンロードして、Readmeにて詳細が書かれています。

20190924_02

20190924_03

ここでもしアクティブディレクトリモジュールが動作してい内であれば、同のようなの手順でトラブルシューティングするのですか?

1.まず、ログファイルを確認しましょう。さらに、LDAPのログを有効にしましょう。

App_Config\Include\ldap.config

<setting name=”LDAP.Debug” value=”true” />

2.次に確認するのADサーバーへのコネクションです。

  ネットでたくさんの無料なツールがあるので、それを使ってADサーバーへのコネクション

       を確認しましょう。例えば、http://www.ldapadmin.org/

        また、無料なLDAPテストサーバを使って確認することができます。

        http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/
20190924_04

20190924_05

3.これでも問題があれば、それはコネクションの設定に問題があることが多い。

  直接ADサーバーへのアクセスがあれば、トラブルシューティングが簡単になりますが、

  アクセスがなければ、できるだけ詳細な情報を提供して、お客さんのネットワーク管理者に

  お願いすることになります。

       インストレーションガイドに従い問題になりそうな点を確認していきます。

その一、ポート389がオープンであることが必要です。
その二、attributeMapUsername
この属性は、ユーザー名として使用するActive Directory属性を定義します。
attributeMapUsername=”sAMAccountName” (デフォルト)
attributeMapUsername=”userPrincipalName”

例えば、上記の例で使用しているテストLDAPサーバーへLDAPADMINを使って

接続する際に”cn=read-only-admin,dc=example,dc=com” で接続ができますが、

サイトコアADでは接続ができません。なぜなら、”n=read-only-admin,dc=example,dc=com

distinguishedName です。参照

distinguishedName

20190924_06

 

sAMAccountName 

20190924_07

userPrincipalName

20190924_08

また、sAMAccountName を使用している際に、ドメインを使う場合もあります。

例:

domainname\username

このエラーを見た場合は言語の設定を更新:

2017-10-23_14-06-25

以上です。

Uncategorized