前提バージョン
IBM API Connect 5.0.6.3
Ubuntu 14.04LTS
※当記事ではVMware Workstation PlayerでAPI Connect, UbuntuがPC上に導入済みとします。
#1 API Connect の認証について
API Connect では、APIの保護機能の基本機能として
①APIキー
②OAuth2.0
③基本認証
を提供します(他にもさまざまな保護機能があります)。
上記②や③ではほとんどの場合、API保護のためにユーザー認証処理を行うことになりますが、API Connect は基本的に外部の認証サーバーを用いて認証する必要があります。
この記事では、いくつかある認証方式のうちLDAP サーバーを用いた認証について紹介します。
(今回はAPI保護の設定は「③基本認証」で行います。「②OAuth2.0」のパターンでもLDAPで認証することは可能です)
#2 LDAP サーバーの準備
##2-1 OS導入
OS : Ubuntu 14.04LTS ホスト名 : host01 ドメイン名 : example.com
##2-2 ldap導入
###2-2-1 パッケージのインストール
$ sudo apt-get -y install slapd ldap-utils
###2-2-2 初期設定
$ sudo dpkg-reconfigure slapd
ドメイン名 : example.com
###2-2-3 base.ldif設定
$ sudo vi base.ldif
dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups
$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f base.ldif
##2-3 LDAP管理ユーティリティのインストール
###2-3-1 パッケージのインストール
$ sudo apt-get install phpldapadmin -y
###2-3-2 config.php修正
$ sudo vi /etc/phpldapadmin/config.php
// $servers->setValue('server','port',389);
↓
$servers->setValue('server','port',389);
$ sudo vi /usr/share/phpldapadmin/lib/TemplateRender.php
$default = $this->getServer()->getValue('appearance','password_hash');
↓
$default = $this->getServer()->getValue('appearance','password_hash_custom');
###2-3-3 設定の反映
$ systemctl restart apache2
##2-4 グループ、ユーザーの追加
ldapadminツールで、以下のグループ、ユーザーを追加します。
http://LDAPサーバーのホスト名/phpldapadmin/index.php
###2-4-1 グループの追加
cn=group01,ou=groups,dc=example,dc=com
GID=500
Group=group01
objectClass=posixGroup
###2-4-2 ユーザーの追加
cn=Tarou Test,ou=poeple,dc=example,dc=com
Common Name=Tarou Test
First Name=Tarou
GID Number=500
Home Directory=/home/users/ttest
Last Name=Test
Login shell=/bin/sh
objectClass=inetOrgPerson
posixAccount
UID Number=1001
User ID=ttest
#3 API Connect設定
##3-1 APIConnect上の認証レジストリーの追加
API Manager ユーザーインターフェースにログイン
https://APIManagerサーバーホスト名/apim
以下を入力し、「バインドのテストと基本DNの取得」をクリック
表示名:ldapregistory01 名前:ldapregistory01 ホスト名:LDAPサーバーのIP ポート:389 認証済みバインド 管理DN:cn=admin,dc=example,dc=com パスワード:管理DNのパスワード
更に以下を入力し、「構成のテスト」をクリック
基本DN : dc=example,dc=com 接頭部 : (uid= 接尾部 : )
最後に接続テストするユーザー名、パスワードを入力し、「構成のテスト」をクリック
##3-2 基本認証で保護するAPI定義の作成
API Manager ユーザーインターフェースにログイン
https://APIManagerサーバーホスト名/apim
タイトル:testapi 名前:testapi 基本パス:/testapi バージョン:1.0.0
と入力し、「APIの作成」をクリック
セキュリティー定義のセクションに移動
※デフォルトで、clientIdHeader(APIキー)による保護が設定されます。これはAPI保護の基本機能のうち、「①APIキー」に相当する設定になります。
名前 : basic01 認証に使用 : ユーザー・レジストリー ユーザー・レジストリー : ldapregistory01
を入力
「セキュリティー」セクションで「basic01(基本)」にチェックを追加します。これにより、このAPIに対する保護として、「③基本認証」が追加されます。この設定では、「①APIキー」と「③基本認証」の両方を使って保護が行われます。
後は、「パス」セクション、「ポリシー・アセンブリー」セクションなど、API定義に必要な項目を設定し、製品に追加→デプロイします。
APIの実行時は以下のHTTPヘッダを指定してください。
・APIキー
X-IBM-Client-Id: 開発者ポータルで発行するクライアントID
・基本認証
Authorization: Basic 「ユーザーID:パスワード」をbase64エンコードした文字列
以上で、LDAPサーバーを使ったAPIの基本認証の設定例の紹介を終わります。
免責事項
この記事の内容は不正確である可能性があります。この記事の内容やその利用等によって生じた、いかなる損害に対しても責任は負いません。