[Sitecore][Active Directory]サイトコアのアクティブディレクトリモジュールのセットアップ
概要:
クティブディレクトリモジュールのセットアップ中に見かけるトラブルシューティングのメモ書き
———————————————————————————————
検証環境は次の通りです。
毎日仕事が忙しくてなかなかちゃんとしたブログを書く時間がなくていらいらしております。
今回、サイトコアのアクティブディレクトリモジュールのセットアップについては、下記のようにネッとって多くのブログがあります。以前のバージョンのサイトコアのアクティブディレクトリモジュールも何回かセットアップしたことがあり、ログインさえ正しいであれば、簡単に接続ができます。今回のセットアップでちょっと手間がかかり、ブログ・メモ書きとして、もっと設置を深く、問題が発生する際にどのような手順でトラブルシューティングするのを書いています。
まず、サイトコアのアクティブディレクトリモジュールのセットアップについてネットでたくさんの記事が書かれています。
- https://sitecorecommerce.wordpress.com/2017/07/31/sitecore-active-directory-module-1-3-setup-guide/
- http://blog.peplau.com.br/en_US/best-way-to-setup-active-directory-module-in-a-sitecore-solution/
- https://www.linkedin.com/pulse/sitecore-82-active-directory-13-integration-mohd-naeem
また、アクティブディレクトリモジュールのセットアップガイドも詳細に書かれいます。
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>
この設定にて唯一アクティブディレクトリモジュールのセットアップガイドにて書かれていないのは
ログインする際に下記のエラーのパッチが含まれています。
記事: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にて詳細が書かれています。
ここでもしアクティブディレクトリモジュールが動作してい内であれば、同のようなの手順でトラブルシューティングするのですか?
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/
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
sAMAccountName
userPrincipalName
また、sAMAccountName を使用している際に、ドメインを使う場合もあります。
例:
domainname\username
このエラーを見た場合は言語の設定を更新:
以上です。