タグ ‘ OSS

RedmineをSAML認証に対応させる

RedmineをSAML認証に対応させ、SSO出来るようにするmemo

OpenAM 11と連携させた時の設定例です。
Redmineは2.0.0以上である必要があり、正常に動作していることが前提

Ruby とか Rails とか全然わかってないので、とりあえず動いたって言うレベル

  1. GitHubから、以下のプラグインをダウンロードし、pluginsディレクトリに展開します。
    chrodriguez/redmine_omniauth_saml · GitHub.
  2. bundle installを実行し、依存関係を解決します。
  3. Redmineのルートディレクトリで、以下のコマンドを実行
    setenv RAILS_ENV production
    rake redmine:plugins
  4. 展開した中にある sample-saml-initializers.rb を Redmineのルートディレクトリにある
    config/initializers へ saml.rb としてコピー
  5. saml.rb を編集
  6. Redmineのインスタンスを再起動
  7. Redmineの管理 → プラグイン → Redmine Omniauth SAML plugin で必要に応じて設定する

saml.rbは以下の感じ

RedmineSAML = HashWithIndifferentAccess.new(
	:assertion_consumer_service_url	=> "http://redmine.example.local:9000/auth/saml/callback",
	:issuer							=> "http://redmine.example.local:9000/",
	:idp_sso_target_url				=> "http://openam.example.local:8080/OpenAM-11.0.0/SSORedirect/metaAlias/idp",
	:idp_cert_fingerprint			=> "DE:........:33", # SSL SHA-1 fingerprint
	:name_identifier_format			=> "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
	:attribute_mapping				=> {
		:login		=> 'extra.raw_info.EmailAddress',
		:firstname	=> 'extra.raw_info.givenname',
		:lastname	=> 'extra.raw_info.sn',
		:mail		=> 'extra.raw_info.EmailAddress'
	}
)

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :saml, RedmineSAML
end

 

 

さくらのレンタルサーバにgitを入れる

FuelPHP 1.6からcomposerと言うPHPのパッケージ管理的なツールを使うようになったらしく、
gitが必要になったので、入れてみた。

普通に./configureしてgmakeすると、threadのところがエラーになる。

$ ./configure --prefix=$HOME/app/bin/git --enable-pthreads="-pthread"
$ gmake
$ gmake install

$ cd ~/bin
$ ln -s $HOME/app/bin/git/bin/git ./git

この辺りを参考にしてみた。

FreeBSD + ApacheでAD連携 SSO

FreeBSD上のApacheとWindows Server上のADを連携させてSSOをやってみた。
ちなみに手元の環境がFreeBSD 7.1Rとか言う化石的な環境なところだけご注意ください。
(時間が取れれば、9.1Rとかで試したいところですが・・・)

検索してみた感じだと、面倒そうだったけど結構あっさり出来た。

  • ドメイン名:addomain.example.local
  • ドメインコントローラ:dc01.addomain.example.local
  • Webサーバ:webserv.addomain.example.local
  • SSOユーザ名(認証用ダミーユーザ):httpsso
  • SSOユーザパスワード:httpssoPass

Windows Server側で以下のコマンドを実行し、生成された keytab と言うファイルをFreeBSD側に持ってくる。

C:\>ktpass.exe -princ HTTP/webserv.addomain.example.local@ADDOMAIN.EXAMPLE.LOCAL -mapuser httpsso@addomain.example.local -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass httpssoPass -out c:\keytab
Targeting domain controller: dc01.addomain.example.local
Successfully mapped HTTP/webserv.addomain.example.local to httpsso.
Password succesfully set!
Key created.
Output keytab to c:\keytab:
Keytab version: xxxx
keysize xx HTTP/webserv.addomain.example.local@ADDOMAIN.EXAMPLE.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x17 (RC4-HMAC) keylength 16 (xxxxxxxx)

FreeBSD側はportsからmod_auth_kerb2を入れる

# portinstall www/mod_auth_kerb2/

FreeBSD側の設定としては以下の2つ

/etc/krb5.conf

[libdefaults]
default_realm = ADDOMAIN.EXAMPLE.LOCAL

[realms]
ADDOMAIN.EXAMPLE.LOCAL = {
kdc = tcp/dc01.addomain.example.local
}

[domain_realm]
.addomain.example.local = ADDOMAIN.EXAMPLE.LOCAL
addomain.example.local = ADDOMAIN.EXAMPLE.LOCAL

.htaccess

AuthType Kerberos
AuthName "Kerberos Login"
KrbAuthRealms ADDOMAIN.EXAMPLE.LOCAL
KrbServiceName HTTP/webserv.addomain.example.local@ADDOMAIN.EXAMPLE.LOCAL
Krb5Keytab /home/tatsuya/keytab
KrbVerifyKDC Off
Require valid-user

FreeBSD側で確認するには以下のコマンドが使えるらしい。
ticketが取れればOKって感じかな?

# kinit --use-keytab -t /home/tatsuya/keytab HTTP/webserv.addomain.example.local
kinit: NOTICE: ticket renewable lifetime is 1 week

ブラウザで表示するときは、ホスト名で指定しないとダメっぽいですね。
IEなら http://webserv/ と言う感じで、ゾーンがイントラにならないとダメかな。
Chromeだと http://webserv.addomain.example.local/ でも大丈夫そう。

アーカイブ

2017年5月
« 3月    
1234567
891011121314
15161718192021
22232425262728
293031