• 検索結果がありません。

WAS V8.5.5 SAML認証構成ガイド - Liberty Profile編

N/A
N/A
Protected

Academic year: 2021

シェア "WAS V8.5.5 SAML認証構成ガイド - Liberty Profile編"

Copied!
39
0
0

読み込み中.... (全文を見る)

全文

(1)

日本アイ・ビー・エム システムズ・エンジニアリング株式会社

WAS V8.5.5 SAML Web SSO 構成ガイド

(2)

© 2016 IBM Corporation

Disclaimer

 この資料は日本アイ・ビー・エム株式会社ならびに日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビュー

を受けておりません。

 当資料は、資料内で説明されている製品の仕様を保証するものではありません。

 資料の内容には正確を期するよう注意しておりますが、この資料の内容は2015年12月現在の情報であり、製品の新しいリ

リース、PTFなどによって動作、仕様が変わる可能性があるのでご注意下さい。

 今後国内で提供されるリリース情報は、対応する発表レターなどでご確認ください。

 IBM、IBMロゴおよびibm.comは、世界の多くの国で登録されたInternational Business Machines

Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現

時点でのIBMの商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。

 当資料をコピー等で複製することは、日本アイ・ビー・エム株式会社ならびに日本アイ・ビー・エム システムズ・エンジニアリング株

式会社の承諾なしではできません。

 当資料に記載された製品名または会社名はそれぞれの各社の商標または登録商標です。

 JavaおよびすべてのJava関連の商標およびロゴは Oracleやその関連会社の米国およびその他の国における商標または登録

商標です。

 Microsoft, Windows および Windowsロゴは、Microsoft Corporationの米国およびその他の国における商標です。

 Linuxは、Linus Torvaldsの米国およびその他の国における登録商標です。

 UNIXはThe Open Groupの米国およびその他の国における登録商標です。

(3)

目次

1. はじめに

2. Liberrtyプロファイル環境の確認

3. eclipse/WDT環境の確認

4. Liberty SAML Web SSO構成の前提

5. samlWeb-2.0フィーチャーの追加

6. SamlWebSso20要素~AuthFilter要素の追加

7. KeyStore要素の追加

8. WebApplication要素~application-bnd要素~security-role要素~special-subject要素の追加

9. server.xmlの一例

10.(Webアプリケーション側作業)web.xmlの編集

11. SPメタデータのエクスポート

12. 環境確認作業

13. 参考

14. SAMLテスト用サンプル・サーブレット・コード

(4)

© 2016 IBM Corporation

1. はじめに

 SAMLの概要については、「WAS V8.5.5 SAML認証構成ガイド(WAS Full Profile版)」を参照

 Libertyプロファイルでは、SAML仕様で定義される2種類の処理フロー(IdP Initiated SSOとSP-Initiated

SSO)の両方が利用可能である。

【参考】 SAML 2.0 Web Browser Single-Sign-On

http://www-01.ibm.com/support/knowledgecenter/api/content/nl/ja-jp/SSD28V_8.5.5/com.ibm.websphere.wlp.core.doc/ae/cwlp_saml_web_sso.html

(5)

2.1 Libertyプロファイル環境の確認

 Libertyプロファイルのエディションは問わない。

 バージョンは、V8.5.5.7(FixPack7)以上が必要。以下のコマンドで確認する。

– productInfo.sh/.bat version

– 実行例

 前提として、samlWeb-2.0フィーチャーが必要。以下のコマンドで確認する。

– productInfo.sh/.bat featureInfo

– 実行例

(6)

© 2016 IBM Corporation

2.2 Libertyプロファイル環境の確認

 もし、samlWeb-2.0フィーチャーがないときには以下の手順でインストールする。

– 接続先リポジトリーに、samlWeb-2.0があることを、以下のコマンドで確認する。

– featureManager.sh/.bat find samlWeb-2.0

• 出力内容に、samlWeb-2.0が含まれていればOK。

– 接続先リポジトリーから、samlWeb-2.0をインストールする。以下のコマンドで実行する。

– featureManager.sh/bat install samlWeb-2.0

– 実行例

(7)

2.3 Libertyプロファイル環境の確認

 samlWeb-2.0フィーチャーをインストール後に、結果を確認する。以下のコマンドで確認する。

– productInfo.sh/.bat featureInfo

– 実行例

(8)

© 2016 IBM Corporation

3. eclipse/WDT環境の確認

 Libertyプロファイルの構成には、eclipse/WDT環境があることが望ましい。

 eclipse (JavaEE IDE)およbWDTのインストール手順については、以下リンク先を参照。

【参考】新卒関西人のWebSphere挑戦記: ① ~WAS Libertyプロファイルの導入~

– http://www.ibm.com/developerworks/jp/websphere/library/was/liberty_intro/1.html

 WDTのバージョンもV8.5.5.7以上である必要がある。以下の方法で確認する。

– Help>About Eclipseでパネルを開き、WDTアイコンをクリックする。バージョンを確認する。

(9)

4. Liberty SAML SSO構成の前提

 IdPが適切に構成され、ユーザーが定義されていること。

 IdPからエクスポートされたメタデータ・ファイル(idpMetadata.xml)が入手できていること。

 SP側で利用するWebアプリケーションのweb.xmlの編集が可能であること。

(10)

© 2016 IBM Corporation

 WDT上でserver.xmlを開き、フィーチャー・マネージャーの「Add」をクリックする

– 「Design」タブを選択する。

 「Add Features」パネルのフィルターで「saml」と入力し、「samlWeb-2.0」を選択する。

– 「OK」をクリックして、フィーチャー・マネージャーに追加する。

5.1 samlWeb-2.0フィーチャーの追加

10

(11)

 フィーチャー・マネージャーに「samlWeb-2.0」が追加されたのを確認する。

5.2 samlWeb-2.0フィーチャーの追加

(12)

© 2016 IBM Corporation

 server.xmlで「Server Configuration」を選択して、「Add」をクリックする。

 「Add Element」パネルで、フィルターに「saml」と入力し、「SAMLWeb SSO 2.0認証」を選択する。

6.1 SAML Web SS0 2.0認証(samlWebSso20)要素の追加

(13)

 「Server Configuration」に「SAML Web SSO 2.0認証」が追加されたことを確認する。

 必要に応じて、その属性値を変更する。(右図)

6.2 SAML Web SS0 2.0認証(samlWebSso20)要素の追加

詳細については以下リンク先(KnowledgeCenter)を参照のこと。

(14)

http://www-01.ibm.com/support/knowledgecenter/api/content/nl/ja-© 2016 IBM Corporation

 必要に応じて、「SAML Web SSO 2.0認証」の設定値を変更する。

 一般的に、以下の項目は設定が必要である。

– IdPメタデータ・ファイル

IdPからエクスポートしたidpMetadata.xml

の置き場を指定する。

– このファイルの一例を6.5に示す。

 他の項目は必要に応じて設定する。

– Libertyでは設定しないパラメータは

内部のデフォルト値が有効になる

– SamlWebSso20での設定項目を6.4に示す

(英文、KnowledgeCenterから引用)

6.3 SAML Web SS0 2.0認証(samlWebSso20)要素の追加

14

詳細については以下リンク先(KnowledgeCenter)を参照のこと。

http://www-01.ibm.com/support/knowledgecenter/api/content/nl/ja-jp/SSD28V_8.5.5/com.ibm.websphere.wlp.core.doc/ae/rwlp_config_sa

mlWebSso20.html

(15)

6.3 補足(SamlWebSso20で設定可能な項目一覧)1/4

(16)

© 2016 IBM Corporation

6.3 補足(SamlWebSso20で設定可能な項目一覧)2/4

(17)
(18)

© 2016 IBM Corporation

6.3 補足(SamlWebSso20で設定可能な項目一覧)4/4

(19)

6.4 IdPメタデータ・ファイル(idpMetadata.xml)の一例

<?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor entityID="https://idp.ise.com:444/was/sps/WASSAML/saml20" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"><md:IDPSSODescriptor WantAuthnRequestsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:KeyDescriptor use="signing"><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509Certificate>MIICBzCCAXCgAwIBAgIEQH26vjANBgkqhkiG9w0BAQQFADBIMQswCQYDVQQGEwJVUzEPMA0GA1UE ChMGVGl2b2xpMQ4wDAYDVQQLEwVUQU1lQjEYMBYGA1UEAxMPZmltZGVtby5pYm0uY29tMB4XDTA0MDQxNDIyMjcxMFoXDTE3MTIyMjIyMjcxMFowSDELMAkGA1UEBhMCVVMxDzANBg NVBAoTBlRpdm9saTEOMAwGA1UECxMFVEFNZUIxGDAWBgNVBAMTD2ZpbWRlbW8uaWJtLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAiZ0D1X6rk8+ZwNBTVZt7C85m421 a8A52Ksjw40t+jNvbLYDp/W66AMMYD7rB5qgniZ5K1p9W8ivM9WbPxc2u/60tFPg0e/Q/r/fxegW1K1umnay+5MaUvN3p4XUCRrfg79OvurvXQ7GZa1/wOp5vBIdXzg6i9CVAqL29JGi6GYUC AwEAATANBgkqhkiG9w0BAQQFAAOBgQBXiAhxm91I4m+g3YX+dyGc352TSKO8HvAIBkHHFFwIkzhNgO+zLhxg5UMkOg12X9ucW7leZ1IB0Z6+JXBrXIWmU3UPum+QxmlaE0OG9zhp9L EfzsE5+ff+7XpS0wpJklY6c+cqHj4aTGfOhSE6u7BLdI26cZNdzxdhikBMZPgdyQ==</X509Certificate></X509Data></KeyInfo></md:KeyDescriptor><md:KeyDescriptor use="encryption"><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509Certificate>MIICBzCCAXCgAwIBAgIEQH26vjANBgkqhkiG9w0BAQQFADBIMQswCQYDVQQGEwJVUzEPMA0GA1UE ChMGVGl2b2xpMQ4wDAYDVQQLEwVUQU1lQjEYMBYGA1UEAxMPZmltZGVtby5pYm0uY29tMB4XDTA0MDQxNDIyMjcxMFoXDTE3MTIyMjIyMjcxMFowSDELMAkGA1UEBhMCVVMxDzANBg NVBAoTBlRpdm9saTEOMAwGA1UECxMFVEFNZUIxGDAWBgNVBAMTD2ZpbWRlbW8uaWJtLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAiZ0D1X6rk8+ZwNBTVZt7C85m421 a8A52Ksjw40t+jNvbLYDp/W66AMMYD7rB5qgniZ5K1p9W8ivM9WbPxc2u/60tFPg0e/Q/r/fxegW1K1umnay+5MaUvN3p4XUCRrfg79OvurvXQ7GZa1/wOp5vBIdXzg6i9CVAqL29JGi6GYUC AwEAATANBgkqhkiG9w0BAQQFAAOBgQBXiAhxm91I4m+g3YX+dyGc352TSKO8HvAIBkHHFFwIkzhNgO+zLhxg5UMkOg12X9ucW7leZ1IB0Z6+JXBrXIWmU3UPum+QxmlaE0OG9zhp9L EfzsE5+ff+7XpS0wpJklY6c+cqHj4aTGfOhSE6u7BLdI26cZNdzxdhikBMZPgdyQ==</X509Certificate></X509Data></KeyInfo><md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/></md:KeyDescriptor><md:ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"

Location="https://idp.ise.com:444/was/sps/WASSAML/saml20/soap" index="0" isDefault="true"/><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" Location="https://idp.ise.com:444/was/sps/WASSAML/saml20/slo"/><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"

Location="https://idp.ise.com:444/was/sps/WASSAML/saml20/slo"/><md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://idp.ise.com:444/was/sps/WASSAML/saml20/soap"/><md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid- format:persistent</md:NameIDFormat><md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid- format:transient</md:NameIDFormat><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid- format:emailAddress</md:NameIDFormat><md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:encrypted</md:NameIDFormat><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" Location="https://idp.ise.com:444/was/sps/WASSAML/saml20/login"/><md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://idp.ise.com:444/was/sps/WASSAML/saml20/login"/></md:IDPSSODescriptor><md:Organization><md:OrganizationName xml:lang="ja">ISE</md:OrganizationName><md:OrganizationDisplayName xml:lang="ja">ISE</md:OrganizationDisplayName><md:OrganizationURL xml:lang="ja"/></md:Organization><md:ContactPerson contactType="technical"><md:Company>ISE</md:Company><md:GivenName/><md:SurName/><md:EmailAddress/><md:TelephoneNumber/></md:ContactPerson></md:Enti tyDescriptor>

(20)

© 2016 IBM Corporation

 必須ではないが、一例として、SAML SSO認証で保護するURLを設定する手順を示す。

 server.xmlで「SAML Web SSO 2.0認証」を選

択し、「Add」をクリックする。(右図)

 「Add Element」パネルで「認証フィルター参照」を

選択し、「OK」をクリックする。(下図)

 「認証フィルター参照」を選択し、「Add」をクリックする。

 (右図)

6.5 認証フィルター参照(AuthFilter)要素の追加

20

(21)

 「Add Element」パネルで「要求URL」を選択する。(右図)

 「要求URL」の設定値として、「URLパターン」と「マッチング・タイプ」

を設定する。

(22)

© 2016 IBM Corporation

 server.xmlで「Server Configuration」を選択して、「Add」をクリックする。

 「Add Element」パネルで、フィルターに「key」と入力し、「鍵ストア」を選択する。

7.1 鍵ストア(KeyStore)要素の追加

(23)

 「Server Configuration」に「鍵ストア」が追加されたことを確認する。

 パスワード(右図)を入力しCtrl+Sで保管する。

 ロケーション(右図)の場所にkey.jksファイル

が自動的に生成されるので、確認する。

(24)

© 2016 IBM Corporation

 Eclipse/WDT上でWebアプリケーションをLibertyサーバーに追加すると、 server.xmlに自動で以下のように

Webアプリケーション要素が追加される。もしなければ、手動で追加する。

8.1 Webアプリケーション(WebApplication)要素の追加

(25)

 server.xmlで「Webアプリケーション」を選択し、「Add」をクリックする。(下図)

 「Add Element」パネルで「アプリケーション・バインディン

グ」を選択し、「OK」をクリックする。(下図)

 「アプリケーション・バインディング」が追加されたことを確認

する。(右図)

8.2 アプリケーション・バインディング(application-bnd)要素の追加

(26)

© 2016 IBM Corporation

 server.xmlで「アプリケーション・バインディング」を選択し、「Add」をクリックする。(下図)

 「Add Element」パネルで「セキュリティー・ロール」を選択

し、「OK」をクリックする。(下図)

 「セキュリティー・ロール」が追加されたことを確認する。

 「セキュリティー・ロール名」属性に入力する。(右図)

(ここでは「TestingSR」とする。後でアプリに設定する。)

8.3 セキュリティー・ロール(security-role)要素の追加

26

(27)

 server.xmlで「セキュリティー・ロール」を選択し、「Add」をクリックする。(下図)

 「Add Element」パネルで「特殊対象」を選択し、「OK」

をクリックする。(下図)

 「特殊対象」が追加されたことを確認する。

 「特殊対象のタイプ」として、「ALL_AUTHENTICATED

_USERS」を選択する。(右図)

8.4 特殊対象(special-subject)要素の追加

(28)

© 2016 IBM Corporation

 ここまでの手順により、server.xmlは以下の様な内容となる。

<server description="new server">

<featureManager>

<feature>jsp-2.2</feature>

<feature>samlWeb-2.0</feature>

<feature>localConnector-1.0</feature>

</featureManager>

<httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

<samlWebSso20>

<authFilter>

<requestUrl urlPattern="/TestProj/*" matchType="equals"/>

</authFilter>

</samlWebSso20>

<keyStore fileBased="true" location="${server.output.dir}/resources/security/key.jks" password="password"/>

<webApplication id="TestProj" location="TestProj.war" name="TestProj">

<application-bnd>

<security-role name="TestingSR">

<special-subject type="ALL_AUTHENTICATED_USERS"></special-subject>

</security-role>

</application-bnd>

</webApplication>

<applicationMonitor dropinsEnabled="true" updateTrigger="mbean" />

</server>

9. server.xmlの一例

(29)

 Webアプリケーションのweb.xmlファイルで、<security-role>および<security-constraint>を設定する。

(server.xml側で設定した「TestingSR」による認証を可能にする。)

 web.xmlへの追加内容の一例

<security-constraint>

<display-name>TestingSC</display-name>

<web-resource-collection>

<web-resource-name>TestingWR</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>TestingSR</role-name>

</auth-constraint>

</security-constraint>

10. (Webアプリケーション側作業)web.xmlの編集

(30)

© 2016 IBM Corporation

11. SPメタデータのエクスポート

 ブラウザから以下のURLにアクセスすると、SPメタデータが取得できる。

– https://<hostname>:9443/ibm/saml20/defaultSP/samlmetadata

 SPメタデータをファイルとして保存し、IdPにインポートする。(SPメタデータの例を以下に示す)

30 <?xml version="1.0" encoding="UTF-8"?> <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://sora.makuhari.japan.ibm.com:9443/ibm/saml20/defaultSP"> <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <md:KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate>MIIDITCCAgmgAwIBAgIEGWOrtTANBgkqhkiG9w0BAQsFADBBMQswCQYDVQQGEwJ1czEMMAoGA1UE (中略) 1tT+BI3SGw== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:KeyDescriptor use="encryption"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate>MIIDITCCAgmgAwIBAgIEGWOrtTANBgkqhkiG9w0BAQsFADBBMQswCQYDVQQGEwJ1czEMMAoGA1UE (中略) 1tT+BI3SGw== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://sora.makuhari.japan.ibm.com:9443/ibm/saml20/defaultSP/acs" index="0" isDefault="true" /> </md:SPSSODescriptor> </md:EntityDescriptor>

(31)

 SP Initiatedフローの確認手順の一例

①SPアプリURLにアクセスする

アクセス先URL例: https://sora.makuhari.japan.ibm.com:9443/TestProj/TestServlet

②IdP認証URLにリダイレクトされる

リダイレクト先URL例: https://idp.ise.com:444/was/sps/WASSAML/saml20/login

③IdP認証ページでログインする

④SPアプリにリダイレクトされる

12.1 環境確認手順の一例(SP Initiatedフロー)

(32)

© 2016 IBM Corporation

 IdP Initiatedフローの確認手順の一例

①IdP認証URLにアクセスする

IdPに依存する。Tivoli Federated Identity Managerの場合の一例は以下の通り。

https://idp.ise.com:444/was/sps/WASSAML/saml20/logininitial?RequestBinding=HTTPPost&NameIdFormat=email&Partne

rId=https://sora.makuhari.japan.ibm.com:9443/ibm/saml20/defaultSP&Target=https://sora.makuhari.japan.ibm.com:94

43/TestProj/TestServlet

②IdP認証ページでログインする

③SP ACSページにリダイレクトされ、SPアプリにリダイレクトされる

12.2 環境確認手順の一例(IdP Initiatedフロー)

32

(33)

13. 参考

 SAML 2.0 Web Browser Single-Sign-On (再掲)

http://www-01.ibm.com/support/knowledgecenter/api/content/nl/ja-jp/SSD28V_8.5.5/com.ibm.websphere.wlp.core.doc/ae/cwlp_saml_web_sso.html

 新卒関西人のWebSphere挑戦記: ① ~WAS Libertyプロファイルの導入~(再掲)

http://www.ibm.com/developerworks/jp/websphere/library/was/liberty_intro/1.html

 Configuring SAML Web Browser SSO in Liberty

http://www-01.ibm.com/support/knowledgecenter/api/content/nl/ja-jp/SSD28V_8.5.5/com.ibm.websphere.wlp.core.doc/ae/twlp_config_saml_web_sso.html

 SAML web single sign-on version 2.0

(34)

© 2016 IBM Corporation

14. SAMLテスト用サーブレット・サンプル・コード 1/6

package jp.test.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.List; import java.util.Set; import javax.security.auth.Subject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ibm.websphere.security.WSSecurityException; import com.ibm.websphere.security.auth.WSSubject; import com.ibm.websphere.security.saml2.Saml20Attribute; import com.ibm.websphere.security.saml2.Saml20Token; /**

* Servlet implementation class SamlTestServlet */

@WebServlet("/SamlTest")

public class SamlTestServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public SamlTestServlet() { super(); } 34

(35)

14. SAMLテスト用サーブレット・サンプル・コード 2/6

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8");

PrintWriter out = response.getWriter();

out.println("<html><head><title>SAML 2.0 test sevlet</title></head><body BGCOLOR=¥"#FFFFEE¥">"); out.println("<h1>SAML 2.0 test sevlet</h1>");

try {

Subject callerSubject = WSSubject.getCallerSubject();

Set<Saml20Token> privateCredentials = callerSubject.getPrivateCredentials(Saml20Token.class);

for (Saml20Token samlToken : privateCredentials) { out.println("<h2>SAML 2.0 Token</h2>");

out.println("<table Border=¥"2¥" WIDTH=¥"65%¥" BGCOLOR=¥"#DDDDFF¥">"); print(out, "SAML ID", samlToken.getSamlID());

print(out, "SAML Name ID", samlToken.getSAMLNameID());

print(out, "SAML Name ID Format", samlToken.getSAMLNameIDFormat()); print(out, "SAML Issuer Name", samlToken.getSAMLIssuerName());

print(out, "SAML Issuer Name Format", samlToken.getSAMLIssuerNameFormat()); print(out, "Authentication Method", samlToken.getAuthenticationMethod()); print(out, "Authentication Instant", samlToken.getAuthenticationInstant()); print(out, "Issue Instant", samlToken.getIssueInstant());

print(out, "SAML Expires", samlToken.getSamlExpires());

print(out, "Service Provider ID", samlToken.getServiceProviderID()); print(out, "Subject DNS", samlToken.getSubjectDNS());

print(out, "Subject IP Address", samlToken.getSubjectIPAddress()); print(out, "Assertion QName", samlToken.getAssertionQName().toString());

(36)

© 2016 IBM Corporation

14. SAMLテスト用サーブレット・サンプル・コード 3/6

print(out, "Signer Certificate", samlToken.getSignerCertificate().toString()); print(out, "One Time Use", samlToken.isOneTimeUse());

print(out, "Proxy Restriction", samlToken.hasProxyRestriction());

print(out, "Proxy Restriction Count", Long.toString(samlToken.getProxyRestrictionCount())); print(out, "Proxy Restriction Audience", samlToken.getProxyRestrictionAudience().toString()); out.println("</table><BR><BR>");

out.println("SAML 2.0 Attributes");

out.println("<table Border=¥"2¥" WIDTH=¥"65%¥" BGCOLOR=¥"#DDDDFF¥">"); List<Saml20Attribute> samlAttributes = samlToken.getSAMLAttributes();

for (Saml20Attribute attribute : samlAttributes) { String attributeName = attribute.getName();

List<String> attributeValues = attribute.getValuesAsString(); if (attributeValues.size() > 1) {

StringBuilder temp = new StringBuilder("<ul>"); for (String attributeValue : attributeValues) {

temp.append("<li>").append(attributeValue).append("</li>"); }

temp.append("</ul>");

print(out, attributeName, temp.toString()); } else if (attributeValues.size() == 1) { print(out, attributeName, attributeValues.get(0)); } else {

print(out, attributeName, "<no valuses>"); }

}

out.println("</table><BR><BR>"); }

} catch (WSSecurityException ex) { ex.printStackTrace(System.out); }

out.println("</body></html>"); }

(37)

14. SAMLテスト用サーブレット・サンプル・コード 4/6

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response);

}

private static void print(PrintWriter out, String name, boolean value) { out.println("<tr><td>" + escapeChar(name) + "</td><td>"

+ (value? "true" : "false") + "</td></tr>"); }

private static void print(PrintWriter out, String name, Date value) { print(out, name, value.toString());

}

private static void print(PrintWriter out, String name, String value) { out.println("<tr><td>" + escapeChar(name) + "</td><td>"

+ (value == null ? "&lt;none&gt;" : escapeChar(value)) + "</td></tr>");

}

private static String escapeChar(String str) { if (str == null || str.equals("")) return str; int len = str.length();

for (int i = 0; i < str.length(); i++) { switch (str.charAt(i)) { case '<' : // to "&lt;" len += 3; break; case '>' : // to "&gt;" len += 3; break;

(38)

© 2016 IBM Corporation

14. SAMLテスト用サーブレット・サンプル・コード 5/6

case '"' : // to "&quot;" len += 5; break; } }

if (len == str.length()) return str; char ret[] = new char[len]; int j = 0;

for (int i = 0; i < str.length(); i++) { switch (str.charAt(i)) { case '<' : // to "&lt;" ret[j++] = '&'; ret[j++] = 'l'; ret[j++] = 't'; ret[j++] = ';'; break; case '>' : // to "&gt;" ret[j++] = '&'; ret[j++] = 'g'; ret[j++] = 't'; ret[j++] = ';'; break;

case '&' : // to "&amp;" ret[j++] = '&'; ret[j++] = 'a'; ret[j++] = 'm'; ret[j++] = 'p'; ret[j++] = ';'; break; case '"' : // to "&quot;" ret[j++] = '&'; ret[j++] = 'q'; ret[j++] = 'u'; ret[j++] = 'o'; ret[j++] = 't'; ret[j++] = ';'; break; 38

(39)

14. SAMLテスト用サーブレット・サンプル・コード 6/6

default : ret[j++] = str.charAt(i); break; } }

return new String(ret); }

参照

関連したドキュメント

Week 3 Listening Test Part 2, Question-Response (Textbook, Unit 9) Week 4 Listening Test Part 2, Question-Response (Textbook, Unit 9) Week 5 Listening Test Part 5,

WAV/AIFF ファイルから BR シリーズのデータへの変換(Import)において、サンプリング周波 数が 44.1kHz 以外の WAV ファイルが選択されました。.

In this diagram, there are the following objects: myFrame of the Frame class, myVal of the Validator class, factory of the VerifierFactory class, out of the PrintStream class,

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

R_DMACn_Suspend R_DMACn_Resume R_DMACnm_Create R_DMACnm_Start R_DMACnm_Stop.

ESMPRO/ServerAgent for GuestOS Ver1.3(Windows/Linux) 1 ライセンス Windows / Linux のゲスト OS 上で動作するゲスト OS 監視 Agent ソフトウェア製品. UL1657-302

アンチウイルスソフトウェアが動作している場合、LTO や RDX、HDD 等へのバックアップ性能が大幅に低下することがあります。Windows Server 2016,

If the above mentioned goods, exempted from customs duty and internal tax, are offered for use other than the personal use of yourself or your family, within 2 years after the