OpenAMトレーニング OpenAMでシングルサインオンを 実 現 しよう! 株 式 会 社 野 村 総 合 研 究 所 情 報 技 術 本 部 オープンソースソリューション 推 進 室 (OSS 推 進 室 ) Mail : ossc@nri.co.jp Web: http://openstandia.jp/
アジェンダ Section0 : 自 己 紹 介 Section1 : OpenAM 概 要 Section2 : OpenAMインストール Section3 : 連 携 先 システムとのSSO Section4 : まとめ 2
Section0 自 己 紹 介 3
自 己 紹 介 盛 慎 (Makoto MORI) 所 属 部 署 オープンソースソリューション 推 進 室 OSSを 使 ったシステム 構 築 から 運 用 までワンストップでサポート 対 象 OSSは50 種 類 以 上 担 当 SI システム 運 用 維 持 管 理 製 品 開 発 4
Section1 OpenAM 概 要 5
シングルサインオン(SSO)とは 一 度 のログイン(サインオン)で 複 数 のアプリケーション がログイン 済 状 態 で 利 用 できる 仕 組 み SSOサーバ 人 事 システム 会 計 システム 労 務 管 理 システム 2ログイン 済 状 態 で 利 用 Webメールシステム ファイル 共 有 システム 6
シングルサインオン(SSO)とは ユーザにとってのメリット システムごとの 認 証 が 無 くなって 手 間 が 減 る ID/PWの 管 理 ( 記 憶 や 更 新 )が 楽 になる システム 管 理 者 にとってのメリット アカウント 情 報 の 一 元 化 により 運 用 の 手 間 が 減 る ユーザの 認 証 方 法 を 変 更 しやすい( 指 紋 認 証 機 能 の 追 加 など) ユーザのID/PW 管 理 一 元 化 に 伴 うセキュリティの 向 上 7
シングルサインオン(SSO)とは SSO 需 要 の 高 まり 企 業 内 システム 数 の 増 加 複 雑 化 したシステムをよりスマートに 利 用 / 管 理 したい クラウドサービスの 増 加 salesforceなどのクラウドサービスも 企 業 内 システムとシームレスに 使 いたい 求 められる 企 業 コンプライアンスの 高 まり 不 正 ログイン 等 のセキュリティリスクを 低 減 したい 8
シングルサインオン(SSO)とは OpenStandiaのSSO 導 入 事 例 ヘルスケア 課 題 顧 客 の 利 便 性 を 向 上 させるため 複 数 の 自 社 サービスと 顧 客 システムとをシン グルサインオン 対 応 したい ユーザ 数 10,000 人 大 手 医 療 機 器 メーカー 課 題 様 々なアプリケーションに 対 応 でき 将 来 のサービス 追 加 にも 柔 軟 に 対 応 できる 社 内 認 証 基 盤 が 欲 しい ユーザ 数 10,000 人 9
OpenAMとは SSOを 実 現 するためのOSS 旧 Sun Microsystems 社 の 商 用 製 品 (OpenSSO)がベースであるため 高 品 質 かつ 多 機 能 ForgeRock 社 が 継 続 開 発 中 Javaで 実 装 されたWebアプリケーションでOS 非 依 存 CDDL(Common Development and Distribution License)ライセンスで ソースコードを 無 償 で 使 用 改 変 再 配 布 可 能 最 新 の 安 定 バージョンは11.0.0 10
SSO 方 式 OpenAMのSSO 方 式 SSO 方 式 エージェント 方 式 リバースプロキシ 方 式 説 明 アプリケーションが 動 作 するサーバに 直 接 エージェントを 導 入 す る 方 式 リバースプロキシサーバ( 通 常 はApache)にエージェントを 導 入 し バックエンドにいる 複 数 のアプリケーションサーバに 対 して リバースプロキシする 方 式 [ 参 考 ]SAML SAMLとは 認 証 情 報 を 表 現 するためのXML 仕 様 おもにクロス ドメインのサイトやSalesforce GoogleAppsとSSOする 際 に 採 用 する 方 式 [ 参 考 ] 代 理 認 証 方 式 代 理 認 証 とは ユーザからのログインリクエストをエミュレートし 認 証 を 代 行 すること OpenIGと 連 携 することで 代 理 認 証 が 可 能 となる 連 携 先 システムで HTTPヘッダから 認 証 情 報 を 取 得 するカス タマイズが 出 来 ない 際 に 採 用 する 方 式 11
SSO 方 式 エージェント 方 式 3リクエスト SSOトークン SSOサーバ (OpenAM) 5OK ユーザ 情 報 4SSOトークン 正 当 性 確 認 ポリシー エージェント ユーザ 情 報 連 携 先 システム 連 携 先 システムにポリシー エージェントを 入 れる 必 要 がある 12
SSO 方 式 OpenAMでのログインが 完 了 したらSSOトークン (Cookie)を 発 行 します ブラウザ SSOサーバ 連 携 先 システム 連 携 先 システムへアクセス SSOサーバへのリダイレクト 要 求 ログイン 情 報 送 信 Set-Cookie SSOトークン + 連 携 先 へのリダイレクト 要 求 連 携 先 システムへアクセス SSOトークン 送 信 SSOトークン 正 当 性 確 認 OK ポリシーエージェント の 仕 事 ユーザ 情 報 を ヘッダに 追 加 ポリシーエージェント の 仕 事 レスポンス 13
SSOトークンについて SSOトークンの 正 体 認 証 トークン 認 証 クッキーとも 呼 ばれる 標 準 では iplanetdirectorypro という 名 前 のクッキー 認 証 されたユーザの 識 別 方 法 ポリシーエージェントがHTTPリクエストヘッダにユーザ 識 別 情 報 ( 例 :ロ グインID)を 付 与 する アプリケーションはHTTPリクエストヘッダからユーザ 識 別 情 報 を 取 得 す る GET / HTTP/1.1 Accept : text/html Accept-Language : ja-jp Connection : Keep-Alive Cookie :iplanetdirectorypro=ku(gku(#lgsjvuur749 エージェント 通 過 後 GET / HTTP/1.1 Accept : text/html Accept-Language : ja-jp Connection : Keep-Alive Cookie : iplanetdirectorypro=ku(gku(#lgsjvuur749 LOGINID : m7-mori@foobar.baz 14
ポリシーエージェントについて ポリシーエージェントとは SSO 対 象 の 連 携 先 サーバへインストールするモジュール SSOサーバと 通 信 し 認 証 / 認 可 に 必 要 な 情 報 を 取 得 する ユーザからリクエストがあるとそのURLを 評 価 し 拒 否 / 許 可 を 判 定 する 提 供 されているエージェントの 種 類 Webポリシー エージェント Apache 2.0 2.2 2.4 用 Microsoft IIS 6.0 7.0 8.0 等 J2EEポリシー エージェント Tomcat v 6.0 & 7.0 用 JBoss EAP 5.x 6 用 JBoss AS 7 用 等 15
SSO 方 式 リバースプロキシ 方 式 SSOサーバ (OpenAM) 2SSOトークン SSOトークン 5OK ユーザ 情 報 1ログイン 4SSOトークン 正 当 性 確 認 ポリシー エージェント 3リクエスト SSOトークン リバース プロキシ 6リクエスト ユーザ 情 報 連 携 先 システム 16
SSO 方 式 リバースプロキシがSSOをドライブします ブラウザ リバースプロキシ SSOサーバ 連 携 先 システム 連 携 先 システムへアクセス ポリシーエージェント の 仕 事 ログイン 画 面 へのリダイレクト 要 求 ログイン 情 報 送 信 Set-Cookie SSOトークン + 連 携 先 へのリダイレクト 要 求 連 携 先 システムへアクセス SSOトークン 送 信 ポリシーエージェント の 仕 事 SSOトークン 正 当 性 確 認 OK 連 携 先 システムへアクセス ユーザ 情 報 を 追 加 レスポンス 17
Section2 OpenAMインストール 18
OpenAMインストール 概 要 OS CentOS6 OpenAM 11.0.0 ダウンロード 元 :http://forgerock.org/openam-archive.html SSOサーバ (OpenAM) 5OK ユーザ 情 報 3リクエスト SSOトークン 4SSOトークン 正 当 性 確 認 ポリシー エージェント ユーザ 情 報 連 携 先 システム 19
OpenAMインストール ネットワークのセットアップ(FQDNの 登 録 ) /etc/sysconfig/network HOSTNAME=openam.nri.jp /etc/hosts 192.175.204.251 openam.nri.jp 環 境 整 備 ( 動 作 検 証 のため) /etc/sysconfig/selinux #SELINUX=enforcing SELINUX=disabled ファイアウォールをOFF $ service iptables stop $ chkconfig iptables off 20
OpenAMインストール JDKのダウンロード ORACLE 公 式 サイトからJDKをダウンロード http://download.oracle.com/otn-pub/java/jdk/7u60-b19/jdk-7u60-linuxx64.rpm?authparam=1404214955_1502d8aa0b24bce9ad8fbca7bc8fde11 Accept License Agreement をクリックしてから jdk-7u60-linuxx64-rpm をクリック 21
OpenAMインストール JDKのインストール インストール # rpm -ivh jdk-7u60-linux-x64.rpm # java -version java version "1.7.0_60" Java(TM) SE Runtime Environment (build 1.7.0_60-b19) Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode) 以 下 のようなエラーが 出 た 場 合 は ld-linux.so.2をインストールする /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory # yum install ld-linux.so.2 22
OpenAMインストール Tomcatのインストール Tomcatをダウンロードしてインストール # wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat- 8/v8.0.9/bin/apache-tomcat-8.0.9.tar.gz # tar zxvf apache-tomcat-8.0.9.tar.gz # mv apache-tomcat-8.0.9 /usr/share/tomcat8 /root/.bash_profile export JAVA_HOME=/usr/java/default/ export JAVA_OPTS="-Xmx1024m -XX:MaxPermSize=256m" 23
OpenAMインストール OpenAMのインストール ForgeRock 公 式 サイトからwarファイルをダウンロード 24
OpenAMインストール Tomcatへのデプロイ ダウンロードしたwarファイルをリネームする # mv OpenAM-11.0.0.war openam.war Tomcatにデプロイする # mv openam.war /usr/share/tomcat8/webapps/ Tomcatを 起 動 する # /usr/share/tomcat8/bin/startup.sh 25
OpenAMインストール OpenAM 初 期 設 定 :Step1 http://openam.nri.jp:8080/openam/ 26
OpenAMインストール OpenAM 初 期 設 定 :Step2 amadmin(openam 管 理 者 )のパスワードを 設 定 ( 例 :adminpassword) 27
OpenAMインストール OpenAM 初 期 設 定 :Step3 サーバーURL : http://openam.nri.jp:8080 Cookieドメイン :.nri.jp プラットフォームロケール 設 定 ディレクトリはそのままでOK 28
OpenAMインストール OpenAM 初 期 設 定 :Step4 最 初 のインスタンス を 選 択 して 次 へ 29
OpenAMインストール OpenAM 初 期 設 定 :Step5 OpenAMのユーザーデータストア を 選 択 して 次 へ 30
OpenAMインストール OpenAM 初 期 設 定 :Step6 いいえ を 選 択 して 次 へ 31
OpenAMインストール OpenAM 初 期 設 定 :Step7 デフォルトポリシーエージェントのパスワードを 設 定 ( 例 :agentpassword) 32
OpenAMインストール OpenAM 初 期 設 定 :Step8 設 定 内 容 を 確 認 して 設 定 の 作 成 33
OpenAMインストール OpenAM 初 期 設 定 :Step9 設 定 が 実 行 されます 34
OpenAMインストール OpenAMにログイン http://openam.nri.jp:8080/openam にアクセスし amadminユーザー でログインします 35
OpenAMインストール OpenAMにログイン OpenAM 管 理 コンソールのメインメニュー 画 面 が 表 示 されます 36
Section3 連 携 先 システムとのSSO 37
連 携 先 システムとのSSO 連 携 先 システム 概 要 OS CentOS 6 Webサーバー Apache2.2 CGIで 動 作 SSO 方 式 エージェント 方 式 認 証 情 報 はOpenAM 付 属 の データストアを 利 用 SSOサーバ (OpenAM) 5OK ユーザ 情 報 OpenAMログインユーザの ユーザIDを 連 携 Apache2.2 用 ポリシーエージェント 3リクエスト SSOトークン 4SSOトークン 正 当 性 確 認 ポリシー エージェント ユーザ 情 報 連 携 先 システム 38
連 携 先 システムとのSSO 連 携 先 システム クライアントからのリクエストヘッダの 内 容 を 表 示 するだけのアプリケー ション 39
連 携 先 システムの 構 築 JREをダウンロード ORACLE 公 式 サイトからJREをダウンロード(エージェントインストール 用 ) http://download.oracle.com/otn-pub/java/jdk/7u60-b19/jre-7u60-linuxx64.rpm?authparam=1404279220_20255c368d3e0d87f37c3af323bec95f 40
連 携 先 システムの 構 築 JREを 連 携 先 サーバにインストール ファイルを 展 開 # ls -l jre-7u60-linux-x64.rpm # rpm -ivh jre-7u60-linux-x64.rpm # ls l /usr/java jre1.7.0_60 41
連 携 先 システムの 構 築 JREを 連 携 先 サーバにインストール JREにPATHを 通 す # vi ~/.bash_profile export JAVA_HOME=/[jreを 展 開 したフルパス]/jre1.7.0_60 追 記 export PATH=$PATH:$JAVA_HOME/bin 追 記 # source ~/.bash_profile # java version /lib/ld-linux.so.2: bad ELF interpreter ld-linux.so.2が 無 くエラー # yum install ld-linux.so.2 # java version java version "1.7.0_60" Java(TM) SE Runtime Environment (build 1.7.0_60-b19) Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode) 42
連 携 先 システムの 構 築 ネットワーク 設 定 SSOサーバの/etc/hostsファイルに 連 携 先 サーバを 追 記 する 192.175.204.192 openam-app.nri.jp 連 携 先 サーバの/etc/hostsファイルにSSOサーバを 追 記 する 192.175.204.251 openam.nri.jp 43
連 携 先 システムの 構 築 ポリシーエージェントをダウンロード 44
連 携 先 システムの 構 築 ポリシーエージェントを 連 携 先 サーバにインストール ファイルを 解 凍 # ls -l apache_v22_linux_64_agent_3.1.0-xpress.zip # unzip apache_v22_linux_64_agent_3.1.0-xpress.zip # ls web_agents apache22_agent Apacheを 止 める # /etc/init.d/httpd stop パスワードファイルを 作 成 する # cd web_agents/apache22_agent/bin # echo [デフォルトポリシーエージェントのパスワード] > password.txt 45
連 携 先 システムの 構 築 ポリシーエージェントを 連 携 先 サーバにインストール ポリシーエージェントをインストール #./agentadmin --install Please read the following License Agreement carefully: [Press <Enter> to continue...] or [Enter n To Finish] (ライセンスが 表 示 されるので Enterかnで 読 み 進 める) Agreement (yes/no): [no]: yes 入 力 Enter the Apache Server Config Directory Path [/opt/apache22/conf]: /etc/httpd/conf OpenAM server URL: http://openam.nri.jp:8080/openam Agent URL: http://openam-app.nri.jp:80 Enter the Agent Profile name: openam-app Enter the path to the password file: [password.txtへのフルパス] Please make your selection [1]: Enter 成 功 すると apache22_agentディレクトリにagent_001が 作 成 される 46
OpenAMの 設 定 エージェントプロファイルの 作 成 http://openam.nriossc.co.jp:8080/openam からOpenAMにログイン 47
OpenAMの 設 定 エージェントプロファイルの 作 成 アクセス 制 御 >( 最 上 位 のレルム)>エージェント と 遷 移 エージェントの 新 規 ボタンをクリック 48
OpenAMの 設 定 エージェントプロファイルの 作 成 エージェントの 情 報 を 入 力 して 作 成 ボタンをクリック 49
OpenAMの 設 定 エージェントプロファイルの 作 成 作 成 されたエージェント 名 をクリック 50
OpenAMの 設 定 エージェントプロファイルの 作 成 SSOのみモード の 有 効 にチェックを 入 れて 保 存 ボタンをクリック その 後 ログアウト 51
連 携 確 認 連 携 確 認 連 携 先 システムにアクセス http://openam-app.nri.jp/app01 OpenAMのログインページにリダイレクトされることを 確 認 http://openam.nri.jp:8080/openam/ui/login?goto=http%3a%2f%2f openam-app.nri.jp%2fapp01 52
連 携 確 認 連 携 確 認 OpenAMのユーザでログイン(amadmin/adminpassword)すると app01 の 画 面 が 表 示 される このとき HTTPヘッダに iplanetdirectorypro というSSOトークン (Cookie)が 追 加 されていることを 確 認 53
連 携 確 認 構 築 したシステムは 以 下 のような 動 作 をしています ブラウザ SSOサーバ 連 携 先 システム 連 携 先 システムへアクセス SSOサーバへのリダイレクト 要 求 ログイン 情 報 送 信 ポリシーエージェント の 仕 事 Set-Cookie SSOトークン + 連 携 先 へのリダイレクト 要 求 連 携 先 システムへアクセス SSOトークン 送 信 SSOトークン 正 当 性 確 認 OK レスポンス ポリシーエージェント の 仕 事 54
ログインユーザのIDを 連 携 HTTPヘッダにユーザIDを 追 加 して 連 携 する アクセス 制 御 >( 最 上 位 のレルム)>エージェント と 遷 移 エージェントの 名 前 をクリックしてアプリケーションタブを 開 く 55
ログインユーザのIDを 連 携 エージェントの 設 定 を 変 更 プロファイル 属 性 処 理 を 以 下 のように 変 更 追 加 をクリックした 後 ページ 上 部 の 保 存 をクリック HTTPヘッダの 値 とし て 表 示 する 項 目 HTTPヘッダのキー 56
ログインユーザのIDを 連 携 エージェントを 再 起 動 連 携 先 システムのApacheを 再 起 動 # /etc/init.d/v-httpd restart httpd を 停 止 中 : [ OK ] httpd を 起 動 中 : [ OK ] 57
ログインユーザのIDを 連 携 一 般 ユーザの 確 認 アクセス 制 御 >( 最 上 位 のレルム)> 対 象 と 遷 移 今 回 はdemoユーザを 使 うので demoをクリックしてパスワードを 編 集 58
ログインユーザのIDを 連 携 一 般 ユーザのパスワード 設 定 新 しいパスワード(demodemo)を 設 定 して 了 解 をクリック その 後 ログアウト 59
ログインユーザのIDを 連 携 連 携 先 システムにアクセス http://openam-traning-app.nriossc.co.jp/app01 demoユーザ(demo / demodemo)でログイン 60
ログインユーザのIDを 連 携 ログインユーザIDの 連 携 を 確 認 HTTPヘッダに USERID=demo が 追 加 されていることを 確 認 これで 連 携 先 システムがHTTPヘッダのUSERIDを 参 照 してログインでき る 仕 組 みであれば 該 当 ユーザとしてログイン 可 能 61
連 携 確 認 構 築 したシステムは 以 下 のような 動 作 をしています ブラウザ SSOサーバ 連 携 先 システム 連 携 先 システムへアクセス SSOサーバへのリダイレクト 要 求 ログイン 情 報 送 信 Set-Cookie SSOトークン + 連 携 先 へのリダイレクト 要 求 連 携 先 システムへアクセス SSOトークン 送 信 SSOトークン 正 当 性 確 認 OK ポリシーエージェント の 仕 事 ユーザ 情 報 を ヘッダに 追 加 ポリシーエージェント の 仕 事 レスポンス 62
Section4 まとめ 63
まとめ Section1 : OpenAM 概 要 SSOのメリットについて 説 明 しました OpenAMで 実 現 可 能 なSSO 方 式 をまとめました Section2 : OpenAMインストール OpenAMのインストールの 流 れを 説 明 しました Section3 : 連 携 先 システムとのSSO エージェント 方 式 のSSOの 設 定 の 流 れを 説 明 しました ユーザIDを 連 携 先 システムに 連 携 する 方 法 を 説 明 しました 64
OpenStandiaは 攻 めのIT を 支 援 します オープンソースのことなら なんでもご 相 談 ください! お 問 い 合 わせは NRIオープンソースソリューション 推 進 室 へ ossc@nri.co.jp http://openstandia.jp/ 65 本 資 料 に 掲 載 されている 会 社 名 製 品 名 サービス 名 は 各 社 の 登 録 商 標 又 は 商 標 です NRIオープンソースソリューション NRIオープンソースソリューション 推 進 室 Copyright 2013 推 進 室 Copyright 2011 Nomura Research Nomura Research Institute, Institute, Ltd. All rights Ltd. All reserved. rights reserved.
この 後 は OpenStandia/SSO&IDMソリューションのご 紹 介 です お 問 い 合 わせは NRIオープンソースソリューション 推 進 室 へ ossc@nri.co.jp http://openstandia.jp/ 66 本 資 料 に 掲 載 されている 会 社 名 製 品 名 サービス 名 は 各 社 の 登 録 商 標 又 は 商 標 です NRIオープンソースソリューション NRIオープンソースソリューション 推 進 室 Copyright 2013 推 進 室 Copyright 2011 Nomura Research Nomura Research Institute, Institute, Ltd. All rights Ltd. All reserved. rights reserved.