メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • LDAPのSSO導入時の問題点及び解決法

LDAPのSSO導入時の問題点及び解決法

drupal
drupal
development
LDAP
SSO
system_management

企業内では、ユーザーがWindowsにログインすれば、社内サイトを訪問するときに、ユーザー名とパスワード(例えWindowsのログイン名とパスワード ⇐ WindowsのActive Direcitory認証)をもう一度要求されると不便だと感じます。それを改善するために、SSO(シングルサインオン)を導入します。DrupalのLDAPモジュールをインストールすると、SSOのサブモジュールを有効にして、SSOを実現させます。

DrupalのSSO関連説明が古い

  • SSO関連モジュールのバージョン
    • Drupal: 7.37
    • LDAP: 7.x-2.0-beta8
    • Apache: 2.4.9
    • PHP: 5.5.11
  • DrupalのSSOに関する公式説明:https://www.drupal.org/node/1371478
    • この説明に従って、mod_auth_sspiモジュールをダウンロードして、Apacheの「modules」フォルダに入れます。
    • 上記モジュールのロード記述: LoadModule sspi_auth_module modules/mod_auth_sspi.so を Apacheの設定ファイル(httpd.conf)に追加しました
    • さらに、Apacheの設定ファイル(httpd-vhost.conf) にSSPI関連設定を追加しました(説明通りの設定、ここで省略)
  • Apacheを再起動してみましたが、エラーが発生して、起動できませんでした
    • Apacheのエラーログ(error.log)をチェックしたが、何のエラーか、判断できませんでした
    • エラーを確認するため、DOSプロンプトでApacheを起動して、エラーを確認しました
    • エラーメッセージは単にこのモジュール(mod_auth_sspi)がロードできない( Cannot load modules/mod_auth_sspi.so into server)
  • Googleでいろいろ調査をして、このモジュール(mod_auth_sspi)が Apache2.0.42まで対応しているとので、Apache2.2、Apache2.4の対応は不明です(対応していないのは当たり前だ)

Apache2.4に対応するSSOモジュール:mod_authnz_sspi

  • いろいろな記事を読んで、現在Apache2.4まで対応しているSSOモジュールは「mod_authnz_sspi」を見つけました
  • 現在のバージョン:mode_authnz_sspi-0.1.0a1-2.4.x、Windowsのバージョンに合わせてダウンロードしました
  • このパッケージを解凍後に「doc」フォルダの下に、「INSTALL」ファイルに、具体的なインストール方法が書かれました
    • 同じよう「mod_authnz_sspi」をApacheの「modules」フォルダにコピーします
    • Apacheの設定ファイル「httpd-vhosts.conf」にモジュールのロード、パラメータを設定します
      LoadModule authnz_sspi_module modules/mod_authnz_sspi.so
      
      <IfModule !mod_authnz_sspi.c>
       LoadModule sspi_authnz_module modules/mod_authnz_sspi.so
      </IfModule>
      
      <VirtualHost localhost:80>
       DocumentRoot "C:/develop/dev_sources/php"
       ServerName localhost:80
      
       <directory "C:/develop/dev_sources/php">
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
         #Order Allow,Deny
         #Allow from all
         Require all granted
       </directory>
      
       <Location /drupal_test/user/login/sso>
         AuthType SSPI 
         AuthName "Windows User" 
         SSPIAuth On
         SSPIAuthoritative On
         SSPIDomain [AD認証サーバーのIP]
         SSPIOfferBasic Off
         SSPIOmitDomain On
         Require valid-sspi-user
         #require user "NT AUTHORITY\ANONYMOUS LOGON" denied 
         #SSPIBasicPreferred On
         #SSPIofferSSPI off
       </Location>
      </VirtualHost>
      
    • パラメータ設定の注意点:「Location」の部分はサイトSSOのURLで、もし「/」で設定すると、全てのページにSSO要求を行うので、避けたほうが良いです
  • インストール完了後に、Apacheを再起動して、エラーがなく正常に動作しと事を確認しました
  • LDAPモジュールの管理画面(Home » Administration » Configuration » People » LDAP Configuration のAUTHENTICATIONタブ)「SINGLE SIGN-ON」セクションの「Authentication Mechanism 」 ⇒ 「mod_auth_sspi」として設定します
  • DrupalのSSOページ(http://localhost/drupal_test/user/login/sso)をIE(又はChrome)でアクセスすると、正常に自動認証されます
  • 但し、FirefoxでSSOにアクセスすると、ユーザー認証画面が表示されます(自動に認証は行わない)
    • ​いろいろ調べて、FirefoxのSSPI認証に、ブラウザのパラメーター(network.automatic-ntlm-auth.allow-non-fqdn)を「true」にする必要があります(初期値はfalse)
    • 上記設定で、FirefoxもSSOができました。
       
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)