LoginSignup
2
2

More than 5 years have passed since last update.

SAP Cloud Connectorの認証にActiveDirectoryを利用してみる

Posted at

0. はじめに

SAP Cloud Connector をいじっている中で、認証をLDAPで行うことができると判明。

やってみようということで設定してみたが、SAPのドキュメントには純粋LDAPサーバの例しかなく、
Active Directory(以下、AD)の例がなかったので記事を書いてみることにしました。

題名にSAP~とかいてありますが、要はJNDIRealmの話です。

1. そもそも

以下のヘルプを読むと、LDAPの場合こうしなさい的に書いてあるが、具体的にどうすればいいのか全く分からない。。。

SAP Cloud Platform Connectivity - 認証での LDAP の使用

ヘルプを読み解いていくと、設定画面の内、一番大切なのはConfigurationの部分です。
image.png

設定例を見てみると、明らかにJNDIRealmの書き方です。
よって、Avtive Directoryで認証する為にはADに対応したJNDIRealmを書くことがゴールになります。

Configuration設定例
userPattern="uid={0},ou=people,dc=mycompany,dc=com"
roleBase="ou=groups,dc=mycompany,dc=com"
roleName="cn"
roleSearch="(uniqueMember={0})"

余談:JNDIRealmとは

JNDIRealmという言葉は二つの部分からなっています。
1つ目、JNDIとは「Java Naming and Directory Interface」の略です。
名前の通り、ネーミング/ディレクトリサービスからデータを参照する際に利用するAPIを指します。
ネーミング/ディレクトリサービスの実装は「DNS」や「LDAPデータベース」などが該当します。

2つ目、RealmとはTomcatの用語です。
公式ドキュメントを読むと「A Realm is a "database" of usernames and passwords」と明確に定義してあります。

Apache Tomcat 8 - Realm Configuration HOW-TO

A Realm is a "database" of usernames and passwords that identify valid users of a web application (or set of web applications), plus an enumeration of the list of roles associated with each valid user.

よって、まとめると、Java Naming and Directory Interfaceを利用したユーザデータベースということになります。
具体的にはJNDIAPIでディレクトリサービス(ここではAD)にアクセスし、認証、認可を行う為の設定というところでしょうか。

さらに余談:SAP Cloud Connector のサーブレットコンテナ

サーブレットコンテナにはGEMINIプロジェクトのGemini Web を利用しているようです。
当該PJのリリースノートを追っていくと、Apache Tomcat 7.0.56を利用しているようです。

# ls -l /opt/sap/scc/plugins/org.eclipse.gemini.web.tomcat_2.2.6.RELEASE.jar
-rw-r----- 1 sccadmin sccgroup 104537 May  3 21:28 /opt/sap/scc/plugins/org.eclipse.gemini.web.tomcat_2.2.6.RELEASE.jar

https://www.eclipse.org/gemini/web/download/release-notes/2.2.5.RELEASE.php
https://www.eclipse.org/gemini/web/download/release-notes/2.2.6.RELEASE.php

2. Active Directoryで認証する為の設定

JNDIRealmのうち、connection*Configuration以外の項目から自動生成されそうなので、まずはConfigurationに入力する内容を考えます。

2.1 Configuration

結論は以下のようになります。

Configuration
userBase="DC=example,DC=co,DC=jp" 
userRoleName="memberOf" 
userSearch="(sAMAccountName={0})" 
userSubtree="true"
roleBase="DC=example,DC=co,DC=jp" 
roleName="CN"
roleSearch="(member={0})" 
roleSubtree="true" 

一つ一つ解説していきます。

Apache Tomcat 8 - Realm Configuration HOW-TO

userBase

userBase="DC=example,DC=co,DC=jp" 

ユーザを検索する際の起点となるオブジェクトを指定。

userRoleName

userRoleName="memberOf" 

ユーザオブジェクト内でロールとして扱う属性を指定。
今回はADのグループをロールとして扱うため、memberOf属性を利用する。

userSearch

userSearch="(sAMAccountName={0})"

認証時のユーザIDをAD上のどの属性にマッピングするかを定義する。
ADはsAMAcocountNameという属性がログイン名になっている為、この属性を指定する。
{0}にはWebアプリの認証画面で入力したユーザIDが動的に入る。

userSubtree

userSubtree="true"

userBaseで指定したオブジェクト配下のサブツリーを全て検索対象する場合にtrueを設定する。
※デフォルト値:false

roleBase

roleBase="DC=example,DC=co,DC=jp" 

ロールを検索する際の起点となるオブジェクトを指定。

roleName

roleName="CN"

ロールとして扱う属性を指定する。今回はCommonNameを利用する。

roleSearch

roleSearch="(member={0})" 

ユーザ名とロールを紐づける属性を定義する。
{0}はDistinguished Nameが動的に入る。

roleSubtree

roleSubtree="true"

roleBaseで指定したオブジェクト配下のサブツリーを全て検索対象する場合にtrueを設定する。
※デフォルト値:false

2.2 その他の設定項目

設定項目 概要 設定例
Host LDAPサーバのIP,PORT 192.168.10.5:398
Secure Host SSL/TLSのON/OFF -
Alternate Host 代替LDAPサーバのIP,PORT -
Secure Alternate Host SSL/TLSのON/OFF -
User Name 接続ユーザ名(DN) CN=sv-scc,OU=system,DC=example,DC=co,DC=jp
Password 接続ユーザのパスワード ****
User Role ロール名(※) sg-sccadmins
Monitoring Role ロール名(※)

※ロールはADのグループとするため、↑の設定だとADグループ「sg-sccadmins」に所属しているADユーザがSAP Cloud Connectorの管理画面にログインできるようになる。
※ブランクの場合、「admin」もしくは「sccadmin」というグループ名がハードコーディングされている為利用される。

3. まとめ

以上の設定をまとめると、以下のような形になる。

image.png

Saveボタンを押下すると自動的に再起動が実行される。

4. テスト

再起動完了後、管理画面にアクセスし、ADユーザのアカウント名/パスワードを入力する。
image.png

ログインできることを確認する。(右上のメニューボタンにユーザ名が表示されている)
image.png

以上です!
あくまで設定例なので、参考まで。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2