Tampilkan postingan dengan label Security. Tampilkan semua postingan
Tampilkan postingan dengan label Security. Tampilkan semua postingan

[Java, Security] Upcoming Exception Site List in 7u51

Posted by Unknown Senin, 25 November 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/upcoming_exception_site_list_in

昨年来、多くの新しいセキュリティ関連の機能が実装されてきました。
One Year of Security Enhancements in the JRE
Aurelio Garcia-Ribeyro (Senior Group Product Manager, Oracle)
https://oracleus.activeevents.com/2013/connect/fileDownload/session/FAD6825EC4D708FF5BC5FC3DCC891BDB/CON7799_AGarciaRibeyro.pdf 
これらの機能の多くはAppletやWeb Startアプリケーション(RIA)のためのブラウザプラグインに関連するものでした。多くのエンドユーザーやソフトウェアベンダーが、環境およびアプリケーション利用時の設定方法を尋ねてきました。
Exception Site List(例外サイトリスト)はエンドユーザーがアプリケーションホワイトリストを管理し、以前発表したセキュリティ要件にタイムリーに追随できないRIAを継続して使うための方法です。
New security requirements for RIAs in 7u51 (January 2014)
https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias
http://orablogs-jp.blogspot.jp/2013/11/new-security-requirements-for-rias-in.html
Exception Site Listは、継続してRIAを利用する手段を提供しますが、ユーザーに対する全ての警告を取り除くことを意図しているものではありません。エンドユーザーはこれを使ったとしても重要なプロンプトを見ることになりますが、そうしたプロンプトはブロックしません。

Comparison to Deployment Rule Set

Exception Site Listは、RIAのホワイトリストを作成し、システム管理者への要求を減らします。
 Exception Site List Deployment Rule Set
 導入時期  Java 7 update 51
(January 2014年1月)
Java 7 update 40
(2013年9月)
 対象 エンドユーザー システム管理者
形式 プレーンテキスト 署名済みJARファイル
両者が競合する場合どちらが優先するか Deployment Rule Setを優先
標準ポリシーの適用のために、システム管理者はException Site Listの利用を別のコントロールパネル設定でロックダウンすることができます。

Adding a site to the Exception Site List

エンドユーザーはException Site ListにJavaコントロールパネルからアクセスすることができます。
  1. ブラウザを使っていつも使っているRIAにアクセスします。
  2. URLをアドレスバーからコピーします。
    このときディレクトリパスの/までを選択し、ファイル名は選択しないで下さい。
    • OK: https://www.example.com/someApplication/
    • NG: https://www.example.com/someApplication/filename.html
  3. Javaコントロールパネルを開きます。
    • Windows/Mac - システムコントロールパネルでJavaを選択します。
    • Linux/Solaris - javacplコマンドを実行します。
  4. セキュリティタブを選択します。
  5. 下部の"Manage Site List"(サイトリストの管理)ボタンをクリックします。
  6. 新しい画面が開きます。
    Screenshot of Exception Site List
  7. Add(追加)ボタンをクリックします。
    Screenshot of adding an exception site
    • OK: https://www.example.com/someApplication/
    • NG: https://www.example.com/someApplication/filename.html
  8. OKをクリックすると、画面が閉じます。暗号化されていないプロトコル(httpやfileなど)を使うと別のプロンプトが現れる場合があります。暗号化されたプロトコルを選択することで潜在的な中間者攻撃(Man In The Middle Attack)を防ぎます。
    Man In The Middle Attack (Back Track Linux)
    http://back-track-linux.blogspot.com/2012/11/man-in-middle-attack.html
  9. コントロールパネルに戻り、OKをクリックして画面を閉じます。
  10. ブラウザでWebページをリロードしてRIAを立ち上げます。

Scaling distribution of the Exception Site List

Exception Site Listがエンドユーザーが自身のException Site Listを管理する目的で用意されているとはいえ、ほとんどのソフトウェア設定の変更は自動化することができます。
Exception Site Listを管理するファイルは、デプロイメント設定に記載されているように、ユーザーがデプロイした場所に格納されています。
Deployment Configuration File and Properties
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/properties.html
筆者のWindows 7の環境では、この場所は以下になっています。C:\Users\ecostlow\AppData\LocalLow\Sun\Java\Deployment\security\exception.sites
フォーマットは1行ごとに1サイトです。

Sample customer support note

変更が導入されると、テクニカルサポートの担当者に対し詳細を尋ねるのが常なのですが、ダウンロード可能で、ちょっと調整してこの変更についてみなさまのお客様とお話する上で役立ててもらえるような、そんなテクニカルサポートノートを作成しているところです。本質的にはこのエントリの抜粋版で、How-toメッセージを強調したものです。

Baca Selengkapnya ....

[Java, Security] Security Resource Center

Posted by Unknown Minggu, 17 November 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/security_resource_center

このたび、Java Security Resource CenterをOTN上に立ち上げました。
Java Security Resource Center
http://www.oracle.com/technetwork/java/javase/overview/security-2043272.html

このページの目的は、Javaコミュニティの皆様のためにセキュリティに関連する情報を集約することにあります。このリソースセンターは特定のテクニカルな機能に対するものではありません。機能は様々で、暗号(Cryptography)といったドキュメントの章で取り上げられるものです。
Java Cryptography Architecture (JCA) Reference Guide
http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html
このリソースセンターでは、機能と人がうまくやっていく方法を議論しながら、「セキュリティはみんなの責任」という方向に焦点を当てています。
Cyber Security is Everyone’s Responsibility
https://www.fbi.gov/washingtondc/news-and-outreach/stories/cyber-security-is-everyones-responsibility
The resource center focuses more towards "security is everyone's responsibility" in discussing how features and people work together.
最初に追加したアイテムは、RIAのチェックリストです。これを使って開発者や管理者が以前から発表されていた、Java 7 Update 51(2014年1月)での変更に対応することができます。
Java RIA security checklist
http://www.oracle.com/technetwork/java/javase/overview/ria-checklist-2055184.html
New security requirements for RIAs in 7u51 (January 2014)
https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias
http://orablogs-jp.blogspot.jp/2013/11/new-security-requirements-for-rias-in.html

Baca Selengkapnya ....

[Java, Security] Self-signed certificates for a known community

Posted by Unknown Sabtu, 16 November 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/self_signed_certificates_for_a

先頃発表した、Java 7 Update 51(2014年1月)で計画されている変更が確定し、デフォルトのセキュリティスライダーを操作するには、コードの署名とPermissionというManifest属性を必要とするようになります。
New security requirements for RIAs in 7u51 (January 2014)
https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias
http://orablogs-jp.blogspot.jp/2013/11/new-security-requirements-for-rias-in.html
Securing Software Distribution with Digital Code Signing
https://casecurity.org/2013/10/16/securing-software-distribution-with-digital-code-signing/
コード署名は、業界で推奨されている一般的な方法で、コンピュータが実行するコードが、作成者のコードと同じことを判断するのに有用です。
このエントリは、パブリックな認証局の関与がない、自己署名証明書を利用する必要があるユーザーを支援するために記載しています。

The role of self-signed certificates within a known community

既知のコミュニティ内で自己署名証明書をまだ使用することができます。自己署名とCAから購入した証明書の違いは、自己署名の場合は、それが有効であることを示すために、自己署名証明書をインポートする必要があるのに対し、認証局(Certificate Authorities)は既にデフォルトで信頼されている、というところにあります。

これは、私の証明書が私のものであると信頼してくれる既知のコミュニティでは有効ですが、実際に連絡できないとか、私の証明書を信頼する必要があるシステムを知ることができないところへはスケールしません。多くの異なる要件や頻繁なチェックを通っているため、パブリックな認証局は既に広く信頼されています。
CA/Browser Forumドキュメントページ
https://www.cabforum.org/documents.html
例えば、大学の学生でメーリングリストやWebページで公開証明書を共有する大学生、イントラネットに発行する会社員、エンドユーザに証明書を展開するシステム管理者などを考えてみましょう。展開を自動化するので、管理されたマシンを使うと楽になりますが、これは必須ではありません。要は、単に人々があなたの証明書を信頼してインポートすることなのです。

How to distribute self-signed certificates for a known community

自己署名証明書をに配布し、ユーザーがその自己署名証明書を信頼するにはいくつか手順があります。
  1. 署名のために公開/秘密鍵のペアを作成する
  2. あなたのパブリック証明書を他者のためにエクスポートする
  3. あなたの証明書を、あなたを信頼するマシンにインポートする
  4. 異なるマシンで動作することを検証する

Creating a public/private key pair for signing

公開/秘密鍵のペアを持つことで、アイテムに自分で署名し、認証局に証明書署名要求(CSR)を認証局に発行することができます。

キーペアを作成するための手順に従って、あなたの公開・秘密鍵のペアを作成します。
Generate Keys (The Java Tutorial)
http://docs.oracle.com/javase/tutorial/security/toolsign/step3.html
確認した全ての認証局で類似の手順を提供していましたが、利用したコマンドを以下にまとめておきます。
  1. キーペアを生成します。
    keytool -genkeypair -alias erikcostlow -keyalg EC -keysize 571 -validity 730 -keystore javakeystore_keepsecret.jks
    • このファイルに適切なパスワードを指定します。
    • エイリアス "erikcostlow" は筆者の名前で、覚えやすいものです。あなたの名前として"mykey"のようなものに置き換えましょう。
    • キーアルゴリズムとしてEC(楕円曲線)、キーサイズとして571を指定するとキーが強固になります。
    • 全ての鍵に有効期限を設定すべきです。2年もしくは730日が適切かつ妥当な長さでしょう。ほとんどのパブリック認証局では1年から5年間としています。
    • 鍵をjavakeystore_keepsecret.jksに配置しましょう。このファイルには秘密鍵が含まれており、共有してはいけません。誰か他人がこれらの秘密鍵を入手すた場合、あなたの署名になりすますことができます。自動化されたクラウドバックアップシステムと秘密鍵ストアには是非注意して下さい。
  2. 全ての質問に回答します。上記で指定した"-validity"の日付の間これらの回答が有効なので、正しい回答をすることが重要です。
    What is your first and last name?
      [Unknown]:  First Last
    What is the name of your organizational unit?
      [Unknown]:  Line of Business
    What is the name of your organization?
      [Unknown]:  MyCompany
    What is the name of your City or Locality?
      [Unknown]:  City Name
    What is the name of your State or Province?
      [Unknown]:  CA
    What is the two-letter country code for this unit?
      [Unknown]:  US
    Is CN=First Last, OU=Line of Business, O=MyCompany, L=City, ST=CA, C=US correct?
      [no]:  yes
    Enter key password for <erikcostlow>
            (RETURN if same as keystore password):
  3. 成果物を検証します。
    keytool -list -keystore javakeystore_keepsecret.jks
    これで新しいキーペアが出来ました。

Exporting your public certificate for others

公開鍵インフラストラクチャは2個のシンプルなコンセプトに依拠しています。公開鍵は公開してもよいが、秘密鍵は秘匿しなければならない、というものです。公開証明書をエクスポートすることで、証明書をインポートしてあなたを信頼しようとする他者と共有することができます。
Export the Public Key Certificate (The Java Tutorials)
http://docs.oracle.com/javase/tutorial/security/toolsign/step5.html
keytool -exportcert -keystore javakeystore_keepsecret.jks -alias erikcostlow -file erikcostlow.cer
これを検証するために、ほとんどのOSで.cerファイルをダブルクリックして開くことができます。証明書作成時に入力した情報が表示されるはずです。

これは他者と共有することになるファイルです。この証明書を使ってあなたからのこの証明書で署名されたアーティファクトを証明しようとします。直接マシンを管理しないのであれば、既知のコミュニティ仲間が信頼するはずの場所、例えばイントラネットのページなどに証明書ファイルを配置すべきです。

Import the certificate onto machines that should trust you

証明書を信頼するためには、既知のネットワークに入っている人があなたの証明書をキーストアにインポートする必要があります。最初の手順は証明書が本当にあなたのものであることを検証することですが、これは任意の方法、例えばメール、電話、あるいは直接確認、などの方法で実施できます。既知のネットワークでは通常このような方法が可能です。

正しいキーストアを判断するには…
Deployment Configuration File and Properties
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/properties.html
  • 個々人のユーザーが別のユーザーを信頼する場合、正しいファイルはユーザーディレクトリ内にあります。
  • (例)USER_HOME\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs
  • システム全体にインストールする場合、Javaの認証局はJAVA_HOMEです。
  • (例)C:\Program Files\Java\jre8\lib\security\cacerts
    なお、cacertsのデフォルトパスワードはkeytoolのドキュメントに記載がある通り、"changeit"です。
    keytool - Key and Certificate Management Tool http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html
MacやLinuxのファイルパスは上記リンクに含まれています。
キーストアへの証明書のインポート手順に従って下さい。
Import the Certificate as a Trusted Certificate (The Java Tutorials)
http://docs.oracle.com/javase/tutorial/security/toolsign/rstep2.html
keytool -importcert -keystore THEKEYSTOREFROMABOVE -alias erikcostlow -file erikcostlow.cer
この場合、覚えやすいので、まだエイリアスとして自分の名前を使っています。貴社の名前のエイリアスを使うこともできます。

Scaling distribution of the import

多くのマシン間で証明書を適用する最も簡単な方法は、単に.certファイルやcacertsファイルをマシンに配置することです。これを実施する場合、人々は自分のマシンのこのファイルに加えた全ての変更に気を付けて下さい。
  • 信頼済み.certs: ユーザーディレクトリに発行する場合、ユーザーが直近で更新してから追加した鍵をあなたのファイルが上書きします。
  • CACerts: ファイルの上書きよりは、インストール先のマシン各々でimportコマンドを再実行するのが一番です。アップグレードの間同じcacertsファイルを変更しないだけであれば、追加・削除される任意のCAを上書きします。再度インポートすれば変更に追随します。
パスワードをコマンドラインで指定する -storepass という引数があります。セキュアなシステムでは、管理者は通常、リダイレクション演算子を使ってパスワードを隠しますが、その内容や説明はこのエントリの範囲外です。

Verify work on a different machine

検証とは、あなたが署名している証明書を追加した後に、署名済みのアーティファクトが適切に信頼されていることを確認するため、クライアントマシン上でチェックする方法です。多くの人はデプロイメント・ルールセットを使って始めました。
Introducing Deployment Rule Sets
https://blogs.oracle.com/java-platform-group/entry/introducing_deployment_rule_sets
デプロイメント・ルールセットを以下のようにして検証することができます。
  1. デプロイメント・ルールセットを秘密鍵を保存するコンピュータ上に作成し、署名します。
  2. 署名している証明書をインポートした別のマシンにデプロイメント・ルールセットをコピーします。
  3. Javaコントロールパネルのセキュリティ・タブでデプロイメント・ルールセットが表示されることを確認します。

個別のJARファイルや複数のJARファイルの検証

証明書チェーンをjarsignerコマンドでテストできます。
jarsigner -verify filename.jar
出力に"jar verified"と出ない場合には、以下のコマンドを発行して理由を確認して下さい。
jarsigner -verify -verbose -certs filename.jar
“CertPath not validated”という言葉に対する出力をチェックして下さい。

Baca Selengkapnya ....

[Java, Security] OAuth with Jersey 2

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/mira/entry/oauth_support_in_jersey_2

Jersey 2.3でOAuthのサポートが追加されました。OAuthのサポートについては、サンプル月で以下のドキュメントで説明があります。
Jersey 2.4.1 User Guide
Security > OAuth Support
https://jersey.java.net/documentation/latest/security.html#d0e9038
OAuth 1 をJersey 1.xから移行しました。OAuth 1用のサーバーAPIをあまり変更せず、利用方法の基本原則はJersey 1.xと同様にしています。APIでは認可フローとOAuth 1認可ヘッダー(OAuth1署名を含む)を使う認証をサポートします。アクセストークンやリクエストトークン、利用者の資格証明を管理するOAuth1Providerのご自身の実装を登録することができます。実装はトークン作成ならびにトークンの保存(例えばデータベースへ保存)の責務を負います。残りはJerseyがやってくれます。
クライアントAPIは、認可フロー(ユーザー認可プロセス)の実行方法が大きく変わりました。認可フローはもはやクライアントフィルタに含まれず、スタンドアロンのツールに分離されています。API変更の理由は、クライアントがWebアプリケーションである場合に認可フローを簡単に利用できるようにするためでした。以前のAPIでは、クライアントフィルタから例外を送出し、ユーザーコードがその例外を処理し、ユーザーをリダイレクトして再度リクエスト(認可フローを終了させるフィルタを再度呼び出すリクエスト)を呼び出す、ということによってのみユーザーのリダイレクトが可能でした。現在ではフィルタを使ってOAuth署名をAuthorizationヘッダーに追加するだけで、認可フローは完全に分離されています。このことにより、様々なユーザーが何度も一つのクライアントインスタンスを再利用して認可フローを実行することができます。さらに、認可フローのAPIは認可プロセス内で例外の送出、捕獲を必要としません。
OAuthサポートを使ってTwitterに接続するOAuth 1クライアントのサンプルをチェックしてください。
oauth-client-twitter
https://github.com/jersey/jersey/tree/master/examples/oauth-client-twitter
Jersey 2でのOAuth 2 のサポートは現在クライアント用のみ実装されています(このエントリ執筆時現在のバージョンは2.4.1)。The API for OAuth 2クライアントをサポートするAPIは、Jersey 2でのOAuth 1クライアントをサポートするものと類似しています。

OAuth 2 APIの使用例です。
Auth2CodeGrantFlow flow = OAuth2ClientSupport
.authorizationCodeGrantFlowBuilder(clientId, authUri, accessTokenUri)
.scope("contact")
.build();
認可フローは OAuth2ClientSupport という静的メソッド(OAuth 2クライアントAPIへアクセスするためのメインクラス)を使って構築されています。クライアントアプリケーションの資格証明(clientId)と認可フロー時に使うURIをを渡す必要があります。これらのパラメータは全てサービスプロバイダが発行します。サービスプロバイダはユーザーの同意を得てアクセスしたい当事者です。
これで、 flow オブジェクトを使い、認可URIを生成して、認可フローを開始することができます。
String finalAuthorizationUri = flow.start();
finalAuthorizationUri とはユーザーをリダイレクトする先のURIです。これにはクエリパラメータが含まれており、その一つがclientIdです。ここで、ユーザーを認可URIにリダイレクトする必要があります。アプリケーションをサーバー上で利用する場合は、flow オブジェクトを(キャッシュに)格納し、ユーザーリクエストに対しHTTPのステータス303を返す必要があります。その際、認可URIを location ヘッダーに入れておく必要があります。ユーザーをサービスプロバイダにリダイレクトし、ユーザーにアプリケーションへ権限を付与するかどうかを尋ねるページを表示します。承認後、ユーザーをアプリケーションにリダイレクトします。code と state パラメータをリクエストから取り出し、これらを使って認可を終了します。
TokenResult result = flow.finish(code, state);
このメソッドは、内部でTokenResultに返されるサービスプロバイダからアクセストークンを要求し、その後最終的に、リクエスト内のAuthorizationヘッダーにあるこのトークンを使って、サービスプロバイダにクライアントアプリケーションを認証させることができます(JerseyはOAuth 2認可ヘッダを追加するフィルタを提供します)。
Jerseyには、OAuth 2のクライアントサポートを使用し、WebアプリケーションでGoogleアカウントからタスクを取得するという、OAuth 2サンプルが含まれています。
oauth2-client-google-webapp
https://github.com/jersey/jersey/tree/master/examples/oauth2-client-google-webapp
JerseyでOAuthサポートを試すには、Jerseyのドキュメントで手順を確認して下さい。
Jersey 2.4.1 User Guide
Security > OAuth Support
https://jersey.java.net/documentation/latest/security.html#d0e9038

Baca Selengkapnya ....

[Java, Security] New security requirements for RIAs in 7u51 (January 2014)

Posted by Unknown Senin, 11 November 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias

Java 7 update 51 (2014年1月)では、Rich Internet Application(AppletとWeb Start)の認証・認可を強化するように設計された、2個のセキュリティ変更を含める予定です。デフォルトのセキュリティスライダーをアップデートし、こうした要求事項を満たさないRIAをブロックします。

(注意)この機能はRIAにのみ適用されます。サーバーサイドのJavaやブラウザ外で動作するデスクトップアプリケーションには適用されません。

Summary:

  • すべてのRIA(AppletならびにWeb Startアプリケーション)に対し署名する必要があります。
  • Manifest内に"Permissions"属性を設定する必要があります。
  • Webブラウザから起動したJavaを使うアプリケーションが影響を受けます。Webブラウザ外で動作する場合、そのアプリケーションに影響はありません。
  • 完全な情報はJava 7 Update 51のリリースノートに記載されます()Complete information can be found within the Java 7 update 51 release notes (7u51が2014年1月にリリースされると、以下のページに掲載されます)
    Update Release Notes
    http://www.oracle.com/technetwork/java/javase/7u-relnotes-515228.html

Developers:

7u51時点(US時間の2014年1月14日です)で、RIAをアップデートする必要があります。必要なアップデートは、パッケージングと配布に関するもので、APIコードの変更は不要です。これらの変更の理由は、サンドボックス化されたアプリケーションの目的変更の可能性に関連しています。これにより、署名付きJAR内に権限を配置して、指定した権限レベルの変更を防止します。
Preventing RIAs from Being Repurposed
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/no_redeploy.html

RIAには以下の2個が含まれる必要があります。
  1. 信頼された認証局からのコード署名。AppletやWeb Startアプリケーション用の全てのコードに署名がなされている必要がある。これはPermission属性の有無を問わない。
  2. Manifest属性
    1. Permissions – 7u25で導入された。7u51の時点で、RIAがサンドボックス内で動作する場合、もしくは全権限が必要な場合には設定が必要。
    2. Codebase – 7u25で導入され、7u51の時点で オプション・推奨される属性。ホストされているコードの既知のロケーション(例えば intranet.example.com)を指す。

Sample META-INF/MANIFEST.MF file:

Manifest-Version: 1.0
Created-By: 1.7.0_51
Permissions: sandbox
Codebase: www.java.com java.com
デフォルトのjarコマンド、ビルドツール、IDEでJARをパッケージするときにこのmanifestファイルを作成します。
jar-The Java Archive Tool
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jar.html

Sample JNLP for launching a web start application:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp href="JavaDetection_applet.jnlp">
<information>
<title>Java Detection</title>
<vendor>Oracle Inc.</vendor>
</information>
<resources>
<jar href="JavaDetection.jar" />
</resources>
<applet-desc
name="Java Detection Applet"
main-class="JavaDetection"
width="1"
height="1">
</applet-desc>
<update check="background"/>
</jnlp>
上記JNLPから<security />要素が抜け落ちていることに気付く開発者の方がいらっしゃるかもしれません。暗号で署名されたJARファイル内で<security />要素を提供するため、Java 7 Update 51(2014年1月)からは、もはやJNLP内にsecurity要素は不要になります。

JNLPとデプロイメントツールキットの完全な詳細情報は、Development and Deployment Of Rich Internet Applicationsをご覧下さい。
Java™ Rich Internet Applications Development and Deployment
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/index.html
コードの署名手順は、以下のチュートリアルをご覧下さい。
Lesson: Signing Code and Granting It Permissions (The Java Tutorials)
http://docs.oracle.com/javase/tutorial/security/toolsign/index.html

Desktop Administrators

デスクトップの管理者で、一連のコンピュータに対するJavaインストールを管理しているならば、Deployment Rule Setを使って内部アプリケーションをホワイトリストに加えることを検討して下さい。
Introducing Deployment Rule Sets
https://blogs.oracle.com/java-platform-group/entry/introducing_deployment_rule_sets
Rule Setを展開すると、アプリケーションを更新してこれらの要件に準拠させることができない場合でも、アプリケーションは信頼され、安全であることが知られていることを証明することができます。

Baca Selengkapnya ....

[Java, Security] JEP 124: Enhance the Certificate Revocation-Checking API

Posted by Unknown Minggu, 03 November 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/mullan/entry/jep_124_enhance_the_certificate

失効チェックとは、証明書の失効ステータスを確定するためのメカニズムで、証明書が取り消された場合には無効とみなされ、当該証明書を利用するべきではありません。JDK 7現在、java.security.cert.CertPathValidatorのPKIX実装に含まれる失効チェックの実装では、OCSPとCRLという、2つの主要な失効チェック方式の両方をサポートしています。ただし、振る舞いを設定可能なオプションはほとんどありません。もちろんいつでも失効チェッカーを独自実装できますが、それは大変な作業です。

JEP 124 (Enhance the Certificate Revocation-Checking API) はJDK 8の11個の新しいセキュリティ機能の一つで、 java.security.cert APIを強化し、ベストエフォートチェック、エンドエンティティ証明書チェック、メカニズム固有のオプションやパラメータなどの様々な失効設定をサポートします。これらの詳細を説明し、サンプルをご紹介しましょう。
JEP 124: Enhance the Certificate Revocation-Checking API
http://openjdk.java.net/jeps/124
この機能は新しい PKIXRevocationChecker というクラスが提供します。PKIX CertPathValidator は以下のようにPKIXRevocationChecker インスタンスを返します。
CertPathValidator cpv = CertPathValidator.getInstance("PKIX");
PKIXRevocationChecker prc = (PKIXRevocationChecker)cpv.getRevocationChecker();
返された PKIXRevocationChecker オブジェクトのメソッドを呼び出し、様々な失効オプションを設定することができます。例えば、ベストエフォートオプション(soft-failと呼ばれます)を使うと、ネットワーク接続不可やサーバーの過負荷が原因でステータスが取得できない場合に失効チェックが成功します。これは以下のように設定します。
prc.setOptions(Enum.setOf(Option.SOFT_FAIL)); 
SOFT_FAIL オプションを指定すると、ネットワークの問題が原因で発生した任意の例外を取得できます。この機能は、こうした情報をログに記録したい場合や、警告として扱いたい場合には役に立つかもしれません。 getSoftFailExceptions メソッドを呼び出して、こうした例外を取得することができます。
List<certpathvalidatorexception> exceptions = prc.getSoftFailExceptions();
ONLY_END_ENTITY と呼ばれる別の新しいオプションを使うと、エンドエンティティ証明書の失効ステータスのみをチェックすることができます。このオプションにより、パフォーマンスが改善する可能性がありますが、CA証明書の失効ステータスをチェックしないため、このオプション利用に際しては注意が必要です。複数のオプションを設定するには、単にそれらをまとめて指定します。例えば以下のような感じです。
prc.setOptions(Enum.setOf(Option.SOFT_FAIL, Option.ONLY_END_ENTITY));
デフォルトでは、 PKIXRevocationChecker はまずOCSP、その後CRLをフォールバックとして利用し、証明書の失効ステータスをチェックしようとします。しかし、 PREFER_CRLS option, を使うとその順番を変更することができ、 NO_FALLBACK オプションを使うとフォールバックを全く無効にすることも可能です。例えば、CRLだけを使って失効チェックしたい場合には以下のように設定します。
prc.setOptions(Enum.setOf(Option.PREFER_CRLS, Option.NO_FALLBACK)); 
OCSPレスポンダURI、トラステッドOCSPレスポンダ証明書、OCSPリクエストの拡張といった様々なオプションを指定できる数多くの有用なメソッドもありますが、最も有用な機能の一つが、 setOCSPResponse メソッドを使ってキャッシュされたOCSPレスポンスを指定できることでしょう。OCSPResponseが既に取得済み、例えばOCSPステープリングを利用するプロトコルでは、この機能は非常に有用です。

所望のオプションを全て設定した後に、以下のようにカスタム CertPathCheckers の一つとして PKIXParameters オブジェクトに PKIXRevocationChecker を追加してから、証明書チェーンを検証する必要があります。
PKIXParameters params = new PKIXParameters(keystore);
params.addCertPathChecker(prc);
CertPathValidatorResult result = cpv.validate(path, params);
JDK 8の早期アクセスバイナリは以下のURLからダウンロードできます。
JDK™ 8 Early Access Releases
http://jdk8.java.net/download.html

Baca Selengkapnya ....

[Java, Security] 7u45 Caller-Allowable-Codebase and Trusted-Library

Posted by Unknown Jumat, 25 Oktober 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and

Java 7 update 45(2013年10月)では、JavaScriptとJava Applet間のLiveConnectを使ったやりとりが変わりました。7u45はCPU(Critical Patch Update)で、これはセキュリティベースラインが上がることを意味しており、ユーザーに対しアップグレードを強く推奨するものです。
Updated Security Baseline (7u45) impacts Java 7u40 and before with High Security settings
https://blogs.oracle.com/java-platform-group/entry/updated_security_baseline_7u45_impacts
http://orablogs-jp.blogspot.jp/2013/10/updated-security-baseline-7u45-impacts.html
セキュリティベースライン以下のバージョンでは、Trusted-LibraryというManifest属性を適用することで、サンドボックス内のコードとより高い権限が必要なコード間で呼び出します。
Trusted-Library Attribute
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/mixed_code.html#trusted_library
Trusted-Libraryの値はBooleanで、trueもしくはfalseです。今回のセキュリティベースライン(7u45)でのセキュリティ変更で、異なるCaller-Allowable-Codebaseが導入されました。この属性は、こうしたLiveConnect呼び出しが発信できる場所を正確に指示するものです。例えば、LiveConnect呼び出しは、Webページの3rdパーティ製コンポーネントやその他のDOMベースのブラウザ操作から必ずしも発信すべきものではありません。
Buy An Ad, Own a Browser Botnet (threatpost.com)
https://threatpost.com/buy-an-ad-own-a-browser-botnet
Hacking Browser's DOM Exploiting Ajax and RIA (Shreeraj Shah)
http://www.cio.wisc.edu/Shreeraj_Shah_DOM_Hacking.pdf
Caller-Allowable-Codebase属性の詳細は、以下のリンクからどうぞ。
Caller-Allowable-Codebase Attribute
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#caller_allowable
エンドユーザーのダイアログに対する回避策は、JDK7u45のリリースノートに記載されています。ここではLiveConnect呼び出しのためのTrusted-Library属性を取り除き、Caller-Allowable-Codebaseを使うよう説明しています。
Java™ SE Development Kit 7, Update 45 (JDK 7u45)
Update Release Notes
http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html
すべてのセキュリティベースライン以上のユーザーにとって必要な防御を、この方法で提供します。警告は発生しません。クライアントモジュールは自動的にアップデートを検知し、セキュアベースラインへのアップデートを検知し、ユーザーにアップグレードを促すメッセージを表示します。

警告ダイアログの出現

これらの属性はどちらも協調して様々なバージョンをサポートするように動作することになっています。Manifestを修正して、Caller-Allowable-Codebaseを使うようにすると、セキュリティベースラインを下回るユーザーに対し警告を発するのですが、既知の問題として、Caller-Allowable-Codebaseを使わず、セキュリティベースラインを上回る人にも警告を表示するという問題があります。
Manifest 属性
7u45
7u40以下
Caller-Allowable-Codebaseのみ指定 ダイアログは出ない プロンプトを表示
Trusted-Libraryのみ指定 プロンプトを表示 ダイアログは出ない
両方指定 プロンプトを表示(*) ダイアログは出ない
両属性が共存できるよう、これは将来のリリースで修正される予定。
現時点での回避策は、古いTrusted-Library呼び出しではなく、Caller-Allowable-Codebaseを使うことです。

セキュリティベースラインを下回った状態が必要なユーザーのために

"What to do if your applet is blocked or warns of “mixed code”のエントリの一つ目のオプションで説明したように、管理対象のコンピュータ全体へのソフトウェアの展開を計画しているシステム管理者は、デプロイメントルールセットの適用を考慮してもよいでしょう。
What to do if your applet is blocked or warns of mixed code
https://blogs.oracle.com/java-platform-group/entry/what_to_do_if_your
システム管理者はCritucal Patch Upgradeのメール通知にサインアップすることもできます。
Subscribe to Critical Patch Update Alert E-mails
http://www.oracle.com/technetwork/topics/security/securityemail-090378.html

Baca Selengkapnya ....

[Applications, Java] Sign E-Business Suite JAR Files Now

Posted by Unknown Jumat, 18 Oktober 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/stevenChan/entry/sign_e_business_suite_jar

Oracle E-Business SuiteはJavaを利用しています。とりわけFormsベースのコンテンツでは、Java Runtime Environment(JRE)ブラウザプラグインを使っています。

JREプラグインのデフォルトセキュリティ設定では、時間をかけてより厳しくなることが考えられます。Javaセキュリティの来る変更に備え、全てのE-Business Suite 11i、12.0、12.1、そして12.2のシステム管理者は以下のリンクに記載されている手順に従って下さい。
Javaセキュリティに関する詳細は以下のリンクからどうぞ。
サポートが必要な場合は…
Javaセキュリティに関する質問は、Java Supportに対しService Requestを登録して下さい。
E-Business SuiteのJARファイルへの署名手順の説明が必要な場合は、"Oracle Applications Technology Stack (TXK)"から"Java"を指定し、Service Requestを登録して下さい。

Baca Selengkapnya ....

[Java, Security] Updated Security Baseline (7u45) impacts Java 7u40 and before with High Security settings

Posted by Unknown Rabu, 16 Oktober 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/updated_security_baseline_7u45_impacts

Java Security Baselineが7u25から7u45に更新されました。このため、Javaコントロールパネルで高セキュリティ設定にしている場合、7u45より前のJavaを使っていると、未署名のJava AppletやJavascript LiveConnect呼び出しに依存するJava Appletがブロックされることを意味します。
この問題はAppletやWeb Startアプリケーションにのみ影響します。その他のタイプのJavaアプリケーションには影響しません。

手短に言うと…

Java 7 Update 45にアップグレードしたユーザーは自動的にこの問題が修正されます。アップグレードを強く推奨します。

もっと詳しく言うと…

デプロイメントフローチャートに記載されているように、2項目が関係しています。
Rich Internet Application Deployment Process
Overview
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/deployment_flow.html#overview
  1. セキュリティ・ベースライン(Security Baseline)
    動的にアップデートされる属性で、この属性をチェックして、Javaバージョンに最新のセキュリティパッチが含まれているか確認します
  2. セキュリティ・スライダー(Security Slider)
    どのタイミングでアプレットを実行・停止・プロンプト表示するかをユーザーがコントロールできる設定

Security Baseline

Javaクライアントはどのバージョンに最新のセキュリティパッチが含まれているかを知るため、定期的にチェックインします。バージョンとは、バグ修正が含まれているリリース済みの中間物です。例えば、
  • 7u25(2013年7月)は以前のセキュリティベースラインでした。
  • 7u40にはバグ修正が含まれていましたが、セキュリティパッチは含まれていなかったので、ユーザーはアップグレードする必要はなく、7u25のままでも問題ありませんでした。
  • 7u45(2013年10月)がリリースされると、このCritical Patch Updateにはセキュリティパッチが含まれており、セキュリティベースラインが変わりました。ユーザーは以前のバージョンからアップグレードする必要があります。
定期的にインターネットに接続しないユーザーのために、組み込みの失効日(Expiration Date)があります。
JRE Expiration Date(stackoverflow.com)
http://stackoverflow.com/questions/16067829/jre-expiration-date
事前に確立された4半期のCritical Patch Updateのため、次バージョンのおおよその日付を確認することができます。 7月にリリースされたCritical Patchの後継Critical Patchは、遅くとも7月の3ヶ月後の10月にリリースされます。
The Oracle Software Security Assurance Blog
https://blogs.oracle.com/security/

The Security Slider

セキュリティ・スライダーはJavaコントロールパネル内にあり、これを使ってどのAppletやWeb Startアプリケーションを表示するか、実行するか、ブロックするかを決定します。
表示/実行/ブロックを判断する際に使われる質問の一つは、「セキュリティベースラインと同じ、もしくはそれ以上か("At or Above the Security Baseline")」というものです。

The Combination

LiveConnectからのJavaScript呼び出しが、署名済みJARファイル内に存在しないため、未署名のコードであるとみなされます。これはネットワーク化されたシステム内では正しい振る舞いです。その理由は、たとえドメインがHTTPSを使っていても、署名済みJARファイルとは、署名された「保存データ(data at rest)」を表しているのに対し、TLS(SSLとも呼ばれます)が文字通り 「トランスポートレベルセキュリティ」を意味し、チャネル内のコンテンツやコードではなく、通信チャネルを保護しているためです。
「後で更新」をクリックした場合、AppletやWeb Startを実行すると以下のようになります。
  • ブラウザプラグインが登録されており、実行が許可されているか?-->はい
  • このRIAに対応するルールが存在するか?-->いいえ、どのルールも適用されていない
  • RIAには有効な署名があるか?-->はい、署名は失効していない
  • どのセキュリティプロンプトが必要か?
    • JREはベースラインを下回っている(理由)現在7u45がベースラインであり、「後でアップグレードする」がクリックされているため。
    • デフォルトの「高」設定の下では、未署名コードは「実行禁止」に指定されている。
  • そのため、以下のプロンプトが現れる。

    補足情報

    念のため、Java 7u51(2014年1月)では、未署名および自己署名AppletとWeb Startアプリケーションがデフォルトでブロックされる予定です。
    New security requirements for RIAs in 7u51 (January 2014)
    https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias

    Baca Selengkapnya ....

    [Java] Signing a JNLP File

    Posted by Unknown Kamis, 03 Oktober 2013 0 komentar
    原文はこちら。
    https://blogs.oracle.com/thejavatutorials/entry/signing_a_jnlp_file

    JNLPファイルに署名すると、以下のようなメリットがあります。
    • (例えばランダム・ライブラリを追加したり、アプリケーション情報を変更したりして)他人があなたのJNLPファイルのコンテンツを変更できないことを保証します。
    • アプリケーション中で任意のJava仮想マシン(JVM)オプションやJavaシステムのプロパティの利用を許可します。
    • 他人がHTMLブラウザアプレットでJARファイルを直接参照できなくなります。
    署名済みJNLPファイルを作成するには、JNLPファイル自身に署名をせず、JARファイルを作成し署名する前にJNLPファイルをディレクトリ構造内に含めます。JNLPファイルをAPPLICATION.JNLPと命名する必要があり、JNLP-INFサブディレクトリの中に含めます。その後JARファイルを通常の方法で署名します。Web Startアプリケーションを開始する際には、使用するJNLPファイルはアプリケーション実行のために署名済みJARファイル中のJNLPファイルと同一である必要があります。
    JARファイルに署名済みJNLPファイルが含まれている場合、APPLETタグを使ってAppletを実行することはできませんのでご注意下さい。
    Java TutorialのJARファイルの署名と検証の章でJARファイルの署名方法を説明しています。
    Signing and Verifying JAR Files (The JavaTM Tutorials)
    http://docs.oracle.com/javase/tutorial/deployment/jar/signindex.html

    Baca Selengkapnya ....

    [Database, Security] Security in Oracle Database 12c Gives Reason for Customers to Upgrade

    Posted by Unknown Rabu, 02 Oktober 2013 0 komentar
    原文はこちら。
    https://blogs.oracle.com/securityinsideout/entry/oracle_magazine

    「Plug into the Cloud」という見出しのOracle Magazineの最新号で、お客様が最新リリースのOracle Database 12cへのアップグレードすべき多くの理由を紹介しています。
    Oracle Magazine
    http://www.oracle.com/technetwork/jp/oramag/magazine/index.html(日本語)
    http://www.oracle.com/technetwork/oramag/magazine/home/index.html(英語)
    Oracle Database
    Introducing Oracle Database 12c: Plug into the Cloud
    http://www.oracle.com/jp/products/database/overview/index.html(日本語)
    http://www.oracle.com/us/products/database/overview/index.html(英語)
    Independent Oracle Users Group (IOUG) の会長であり、Oracle ACE DirectorでもあるMichelle Malcherは、Time to Upgradeという記事の中で次のように述べています。
    "Oracle Database 12c is packed with several new and enhanced security features. A great new security feature is privilege analysis, which allows DBAs to get to the bottom of what permissions are really needed and used. How much time is that going to save in audit reports and managing the security for least privilege?"
    「Oracle Database 12cには新しいもの、強化されたものを含め、セキュリティ機能が満載だ。すばらしい新機能は、privilege analysis(特権分析)だ。これを使うとDBAはどの権限が本当に必要なのか、どの権限が利用されているのか、その真相を探ることができる。監査レポートや最小特権のセキュリティ管理において、どれほど時間を節約できるだろう」
    AT ORACLE: In the Field
    Time to Upgrade (Michelle Malcher)
    http://www.oracle.com/technetwork/issue-archive/2013/13-sep/o53field-1995090.html

    Oracle Databaseの最新版の準備のため、Malcherには他者と共に最新機能のベータテストを実施する機会がありました。この期間に、他のベータテスト参加者と共に彼女から別の新機能であるData Redactionに関するコメントをもらいました。


    彼女は以下のように続けています。
    "Redaction is another security features that is easy to implement and probably will save a lot of time previously spent having to mask data in different environments or code solutions to hide private data and information. Setting up a comprehensive redaction policy for users, applications, and environments can further protect sensitive data."
    「Redaction機能とは、もう一つのセキュリティ機能です。実装が簡単で、様々な環境でのデータのマスキングや、個人データや個人情報を秘匿するためにソリューションをコーディングしていた頃に比べて、格段に時間の節約になることでしょう。ユーザーやアプリケーション、環境のための包括的なRedactionポリシーを設定すれば、さらに機密データを保護することができます」
    Oracle Database 12cという最新リリースの新しいセキュリティ機能に関する詳細は以下のページからどうぞ。
    Oracle Database Security
    http://www.oracle.com/jp/products/database/security/overview/index.html(日本語)
    http://www.oracle.com/us/products/database/security/overview/index.html(英語)

    Baca Selengkapnya ....

    [Security, Architecture] Security by Design

    Posted by Unknown Sabtu, 28 September 2013 0 komentar
    原文はこちら(ドイツ語)
    https://blogs.oracle.com/SecurityDE/entry/security_by_design

    ITセキュリティーは、アプリケーション開発と同様に正しいデザインに依存します。今日すでにアプリケーション・ランドスケープのデザインにおいて実施しているように、あらかじめ持続可能性を実現するようにしておくべきです。
    以下の記事で、エンタープライズアーキテクチャの観点でセキュリティをモデリングする方法を説明しています(訳注:記事は英語です)。
    Privacy and Security by Design - An Enterprise Architecture Approach
    Ann Cavouvikan (Ph. D), Mark Dixon (2013/9)
    http://www.privacybydesign.ca/content/uploads/2013/09/pbd-privacy-and-security-by-design-oracle1.pdf

    Baca Selengkapnya ....

    [FMW, Security] How To - Identity Propagation for REST using OWSM - 12.1.2

    Posted by Unknown Senin, 12 Agustus 2013 0 komentar
    原文はこちら。
    https://blogs.oracle.com/owsm/entry/how_to_identity_propagation_for

    このエントリは前回のエントリの続編です。
    How To - Securing REST clients using OWSM - 12.1.2
    https://blogs.oracle.com/owsm/entry/how_to_securing_rest_clients
    http://orablogs-jp.blogspot.jp/2013/08/how-to-securing-rest-clients-using-owsm.html
    前回のエントリでは、WebLogic Serverに同梱されているJersey JAX-RSテクノロジーを使ったRESTサービス、RESTクライアントを保護する方法をステップバイステップでご紹介しました。

    このエントリでは、RESTサービス/クライアントのためのID伝播のステップバイステップガイドをご紹介します。
    Identity Propagation for REST using Oracle WebService Manager 12.1.2
    Step-by-Step Instruction Guide
    http://www.oracle.com/technetwork/middleware/webservices-manager/rest-security-id-prop-12c-1988943.pdf
    このエントリの内容を実際に試す前に、前回までのエントリをご覧になることをお勧めします。
    How To - OWSM 12.1.2 Installation
    https://blogs.oracle.com/owsm/entry/how_to_owsm_12_1
    http://orablogs-jp.blogspot.jp/2013/07/how-to-owsm-1212-installation-and.html
    How To - Securing REST services using OWSM - 12.1.2
    https://blogs.oracle.com/owsm/entry/how_to_securing_rest_services
    http://orablogs-jp.blogspot.jp/2013/07/how-to-owsm-1212-installation-and.html
    How To - Securing REST clients using OWSM - 12.1.2
    https://blogs.oracle.com/owsm/entry/how_to_securing_rest_clients
    http://orablogs-jp.blogspot.jp/2013/08/how-to-securing-rest-clients-using-owsm.html

    Baca Selengkapnya ....

    [FMW, Security] How To - Securing REST clients using OWSM - 12.1.2

    Posted by Unknown 0 komentar
    原文はこちら。
    https://blogs.oracle.com/owsm/entry/how_to_securing_rest_clients

    このエントリは前回のエントリの続編です。
    How To - Securing REST services using OWSM - 12.1.2
    https://blogs.oracle.com/owsm/entry/how_to_securing_rest_services
    http://orablogs-jp.blogspot.jp/2013/07/how-to-owsm-1212-installation-and.html
    前回のエントリでは、WebLogic Serverに同梱されているJersey JAX-RSテクノロジーを使ったRESTサービスを保護する方法をステップバイステップでご紹介しました。

    このエントリでは、RESTサービスおよびRESTクライアントを保護するためのステップバイステップガイドをご紹介します。
    Securing REST Clients using Oracle WebService Manager 12.1.2
    Step-by-Step Instruction Guide
    http://www.oracle.com/technetwork/middleware/webservices-manager/rest-client-security-owsm-12c-1984258.pdf 
    次回以後は、RESTサービスおよびクライアントの観点で、SAMLを使ってIDを伝播させる方法を採り上げる予定です。

    このエントリの内容を実際に試す前に、前回までのエントリをご覧になることをお勧めします。
    How To - OWSM 12.1.2 Installation
    https://blogs.oracle.com/owsm/entry/how_to_owsm_12_1
    http://orablogs-jp.blogspot.jp/2013/07/how-to-owsm-1212-installation-and.html
    How To - Securing REST services using OWSM - 12.1.2
    https://blogs.oracle.com/owsm/entry/how_to_securing_rest_services
    http://orablogs-jp.blogspot.jp/2013/07/how-to-owsm-1212-installation-and.html

    Baca Selengkapnya ....

    [FMW, Security] How To - OWSM 12.1.2 Installation and Securing REST services using OWSM - 12.1.2

    Posted by Unknown Senin, 15 Juli 2013 0 komentar
    原文はこちら。
    https://blogs.oracle.com/owsm/entry/how_to_owsm_12_1
    https://blogs.oracle.com/owsm/entry/how_to_securing_rest_services

    先のエントリで述べたように、FMW 12.1.2がリリースされました。
    FMW 12.1.2 released!
    https://blogs.oracle.com/owsm/entry/fmw_12_1_2_released
    http://orablogs-jp.blogspot.jp/2013/07/fmw-1212-released.html
    OWSMのインストールに関し、11gとは少々異なる箇所がありますので、スクリーンショット付きのインストール手順書を作成しました。
    Oracle Web Service Manager 12.1.2 Installation (July 2013)
    http://www.oracle.com/technetwork/middleware/webservices-manager/owsm-installation-12c-1971739.pdf
    これは12.1.2インストールガイドを補足するものです。
    [注意]
    このHow-toはすべてのシナリオやトポロジーを説明しているわけではありません。主にデモ用途でのインストールや簡単に主要な手順を把握してもらうことを意図しています。

    12.1.2では、SOAP Webサービス/クライアントのようにRESTサービスおよびクライアントの保護および管理をサポートしています。
    OWSM 12.1.2を使ってRESTサービスを保護する手順も以下のリンクにまとめました。
    Securing REST using Oracle WebService Manager 12.1.2 (July 2013)
    http://www.oracle.com/technetwork/middleware/webservices-manager/rest-service-security-owsm-12c-1971795.pdf

    Baca Selengkapnya ....

    [FMW, Security] FMW 12.1.2 released!

    Posted by Unknown Kamis, 11 Juli 2013 0 komentar
    原文はこちら。
    https://blogs.oracle.com/owsm/entry/fmw_12_1_2_released

    Fusion Middleware 12.1.2がリリースされました。これはFusion Middlewareコンポーネントのメジャーリリースであり、以下のようなFusion Middlewareコンポーネントが含まれています。
    • Oracle WebLogic Server 12c (12.1.2.0.0)
    • Oracle Coherence 12c (12.1.2.0.0)
    • Oracle TopLink 12c (12.1.2.0.0)
    • Oracle Fusion Middleware Infrastructure 12c (12.1.2.0.0)
    • Oracle HTTP Server 12c (12.1.2.0.0)
    • Oracle Virtual Assembly Builder 12c (12.1.2.0.0)
    • Oracle JDeveloper 12c (12.1.2.0.0)
    [注意]
    このリリースにはOracle Web Services Managerが含まれていますが、SOA Suiteはこのリリースに含まれていません。

    いくつかリンクをご紹介しましょう。
    個人的な見地で重要と思われる機能をリストアップしてみました。
    • RESTセキュリティのサポート(クライアント、サービスとも)
    • ポリシー添付に関し、LPA(ローカルポリシー添付)とGPA(グローバルポリシー添付)をサポート
    • ポリシーをJDeveloper、Enterprise Manager、WLSTで添付可能
    • ポリシーの監視、監査など
    • WS-SecureConversation、WS-Trust 1.3、Web Service Federationのサポート
    • Kerberosの機能強化。資格証明の移譲/委任を含むSPNEGOのサポート
    • SOAP over JMSの保護をサポート
    • KSS (Key Safety Systems) によるキー管理の改善
    今後のエントリでこうした機能の詳細をお伝えする予定です。

    Baca Selengkapnya ....

    [SOA, Security] Single Sign-On with Security Assertion Markup Language between Oracle and SAP

    Posted by Unknown Rabu, 03 Juli 2013 0 komentar
    原文はこちら。
    http://www.oracle.com/technetwork/articles/soa/fernandes-sso-saml-1965440.html

    Security Assertion Markup Language (SAML)を実装し、Oracle Service Bus (OSB)のOracle Web Services Manager (OWSM)からSAP Enterprise Central Component (ECC)にIDを伝播する方法をご紹介します。

    Enterprise Resource Planning (ERP)アプリケーションを使ってデータやプロセスにアクセスし、更新している場合、ユーザーのアクティビティ追跡は重要なことです。機密データ(例えば会計や売上の数値)をWebサービスで公開するため、様々なシステム間でユーザーIDを伝播させることが可能なセキュアな環境を提供する必要があります。
    この記事では、Security Assertion Markup Language (SAML)を実装して、Oracle Service Bus (OSB)と組み合わせて構成されているOracle Web Services Manager (OWSM)からWebサービスを使ってSAP Enterprise Central Component(ECC)へIDを伝播する方法、必要な構成、Oracle環境の例をご紹介します。

    シナリオ

    このソリューションはOracle Web Services ManagerとOracle Service Bus 11g (11.1.1.6)、SAP ECC 6.06 SP2の環境で実施したものです。各々のシステムが様々な場所でユーザーを認証します。以前はSAP ERPはR/3として知られていました。
    このシナリオでは、(アイデンティティプロバイダーとしての)Oracle Services Busが、(サービスプロバイダーとしての)SAP ECCが発行したSAML 1.1のsender-vouchesを使ってWebサービスにアクセスします。SAML 2.0ではなくSAML 1.1を使っているのは、お客様がアーキテクチャの変更を検討しているためです。
    1964573.gif
    Figure 1: Oracle Service Bus / ECC environment
    ユーザーは自分の資格情報を使用してプロキシサービスにアクセスします。Oracle Service Busは認証し、フローを実行して、ビジネス·サービスを呼び出します。
    ビジネス·サービスに適用されるOracle Web Services Managerのポリシーは、SAMLアサーションの生成が必要です。 Oracle Web Services Managerは、アサーションを含むセキュリティ情報を持つメッセージを生成し、署名されたメッセージ本体と共に、ECCを呼び出します。
    ECCがSAMLアサーションとセキュリティ情報を検証し、メッセージが検証された場合は、ユーザストア内にユーザーが存在することを確認し、ECCは、Oracle Service Busにレスポンスを返します。
    ECCで公開されたサービスは引数としてテキストを一つだけ受け取り、この同じパラメータとユーザー名(SAMLを使用して認証)を連結したものを返します。簡単なテストですが、プラットフォーム間でIDの伝播を確認するには十分です。

    構成

    WebLogic Server

    Oracle WebLogic Serverの組み込みLDAPにユーザーを作成します(例: testsamlclient)。今回のテストでは、このユーザーはプロキシサービスでクライアントを認証します。この同じユーザーもしくは同等のユーザーがECCに存在する必要があります。

    Oracle Web Services Manager

    Oracle Web Services Managerが使うキーストアを構成し、通信に使う証明書をインポートします(Oracle Web Services Managerの秘密鍵、ECCの公開鍵、CA)。 このシナリオではお客様が生成した証明書を使うため、Enterprise CAが証明書発行者です。

    Enterprise Manager Fusion Middleware Controlにアクセスします。
    http://<host>:<port>/em
    キーストアの設定画面で、キーストアと証明書を構成します。今回は、署名鍵でSAML AssertionとSOAPリクエストの本体に署名します。
    <ファーム名>/Weblogicドメイン/<ドメイン名> を開き、[WebLogicドメイン] > [セキュリティ] > [セキュリティプロバイダの構成]へと移動し、 [キーストアの構成]に到達します。
    Figure 2: Oracle Web Services Manager Keystore Configuration
    サーバーを再起動します。
    Enterprise Manager Fusion Middleware Controlに再度アクセスし、新しいセキュリティポリシーを構成します。
    <ファーム名>/Weblogicドメイン/<ドメイン名> を開き、[WebLogicドメイン] > [Webサービス] > [ポリシー]へと移動します。
    Webサービス・ポリシーの画面で、サービス・クライアントに的ようするポリシーを検索します。
    [oracle/wss10_saml_token_with_message_integrity_client_policy]を選択し、[類似作成]をクリックします。
    Figure 3: Creating a web service policy
    ポリシーの名前を変更します(例:oracle/wss10_saml_token_with_message_integrity_client_policy_sap
    Figure 4: Rename the policy
    Because ECC SAML Webサービスは署名付きのタイムスタンプを必要とするため、[設定]タブの[タイムスタンプを含める]にチェックを入れておきます。
    Figure 5: Include timestamp
    それによって、Oracle Web Services Managerは署名付きのタイムスタンプをリクエストに追加し、署名済みのタイムスタンプがレスポンスにあることを期待します。しかしECCは、ECCは署名されていないタイムスタンプをレスポンスに含めて送信してくるため、Oracle Service Busでエラーが発生します。
    oracle.wsm.security.policy.scenario.policycompliance.PolicyComplianceException: WSM-00036 : 
    The signed message elements or parts do not comply with the policy. The following
    headers/elements () or attachments () must be signed:-
    < http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd: Timestamp >
    この問題を解決するため、[構成]タブに移動して、ignore.timestamp.in.responseというプロパティを追加し、その値としてtrueを設定します。この構成により、Oracle Web Services Managerはレスポンス中のタイムスタンプを検証しなくなります。
    Figure 6: Add a property
    saml.issuer.nameのフィールドはSAML Assertionの発行者を定義します(デフォルトではwww.oracle.comになっています)。この値を変更することができますが、Oracle Service Busから到着するSAML Assertionを受け付けるよう、SAP ECCで発行者が構成されている必要があります。
    csf-keyプロパティはデフォルトでbasic.credentialsを使うよう定義されています。<FARM>/Weblogicドメイン/<ドメイン名>をクリックし、メニューから WebLogicドメイン] > [セキュリティ]> [資格証明]へと移動し、testsamlclientユーザーを通知するbasic.credentialsという名前を持つ新しいキーをoracle.wsm.security下に作成します。
    Figure 7: Create Key
    必要に応じて、新しい資格証明キーを定義したり、csf-keyプロパティの値を変更したりできます。

    実装

    Oracle Enterprise Pack for Eclipse (OEPE) を開き、ビジネスサービスをECCのWSDLから生成し、名前を付けます(例:TestSamlClient)。

    以下はECCのWSDLのサンプルです。
    <?xml version="1.0" encoding="utf-8"?>
    <wsdl:definitions targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:tns="urn:sap-com:document:sap:soap:functions:mc-style"
    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
    xmlns:n1="urn:sap-com:document:sap:rfc:functions">
    <wsdl:documentation>
    <sidl:sidl xmlns:sidl="http://www.sap.com/2007/03/sidl"/>
    </wsdl:documentation>
    <wsp:UsingPolicy wsdl:required="true"/>
    <wsp:Policy wsu:Id="BN_BN_YS_SAMLTEST">
    <saptrnbnd:OptimizedXMLTransfer uri="http://xml.sap.com/2006/11/esi/esp/binxml"
    xmlns:saptrnbnd="http://www.sap.com/webas/710/soap/features/transportbinding/"
    wsp:Optional="true"/>
    <saptrnbnd:OptimizedMimeSerialization xmlns:saptrnbnd="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization"
    wsp:Optional="true"/>
    <wsp:ExactlyOne xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:All>
    <sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
    xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy"
    xmlns:wsa="http://www.w3.org/2005/08/addressing"
    xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
    <wsp:Policy>
    <sp:InitiatorSignatureToken>
    <wsp:Policy>
    <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
    <wsp:Policy>
    <sp:WssX509V3Token10/>
    </wsp:Policy>
    </sp:X509Token>
    </wsp:Policy>
    </sp:InitiatorSignatureToken>
    <sp:AlgorithmSuite>
    <wsp:Policy>
    <sp:Basic128Rsa15/>
    </wsp:Policy>
    </sp:AlgorithmSuite>
    <sp:Layout>
    <wsp:Policy>
    <sp:Strict/>
    </wsp:Policy>
    </sp:Layout>
    <sp:IncludeTimestamp/>
    <sp:OnlySignEntireHeadersAndBody/>
    </wsp:Policy>
    </sp:AsymmetricBinding>
    <sp:Wss10 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
    xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy"
    xmlns:wsa="http://www.w3.org/2005/08/addressing"
    xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
    <wsp:Policy>
    <sp:MustSupportRefKeyIdentifier/>
    <sp:MustSupportRefIssuerSerial/>
    </wsp:Policy>
    </sp:Wss10>
    <sp:SignedParts xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
    xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy"
    xmlns:wsa="http://www.w3.org/2005/08/addressing"
    xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
    <sp:Body/>
    <sp:Header Name="Trace"
    Namespace="http://www.sap.com/webas/630/soap/features/runtime/tracing/"/>
    <sp:Header Name="messageId"
    Namespace="http://www.sap.com/webas/640/soap/features/messageId/"/>
    <sp:Header Name="CallerInformation"
    Namespace="http://www.sap.com/webas/712/soap/features/runtime/metering/"/>
    <sp:Header Name="Session"
    Namespace="http://www.sap.com/webas/630/soap/features/session/"/>
    <sp:Header Name="To"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="From"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="FaultTo"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="ReplyTo"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="MessageID"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="RelatesTo"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="Action"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="To"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="From"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="FaultTo"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="ReplyTo"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="MessageID"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="RelatesTo"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="Action"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="ReferenceParameters"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="Sequence"
    Namespace="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
    <sp:Header Name="SequenceAcknowledgement"
    Namespace="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
    <sp:Header Name="AckRequested"
    Namespace="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
    <sp:Header Name="SequenceFault"
    Namespace="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
    <sp:Header Name="Sequence"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="AckRequested"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="SequenceAcknowledgement"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="SequenceFault"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="UsesSequenceSTR"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="UsesSequenceSSL"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    </sp:SignedParts>
    <sp:SignedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
    xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy"
    xmlns:wsa="http://www.w3.org/2005/08/addressing"
    xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
    <wsp:Policy>
    <sp:SamlToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
    <wsp:Policy>
    <sp:WssSamlV11Token10/>
    </wsp:Policy>
    </sp:SamlToken>
    </wsp:Policy>
    </sp:SignedSupportingTokens>
    </wsp:All>
    </wsp:ExactlyOne>
    <wsaw:UsingAddressing xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
    wsp:Optional="true"/>
    </wsp:Policy>
    <wsp:Policy wsu:Id="BN_BN_YS_SAMLTEST_SOAP12">
    <saptrnbnd:OptimizedXMLTransfer uri="http://xml.sap.com/2006/11/esi/esp/binxml"
    xmlns:saptrnbnd="http://www.sap.com/webas/710/soap/features/transportbinding/"
    wsp:Optional="true"/>
    <saptrnbnd:OptimizedMimeSerialization xmlns:saptrnbnd="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization"
    wsp:Optional="true"/>
    <wsp:ExactlyOne xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:All>
    <sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
    xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy"
    xmlns:wsa="http://www.w3.org/2005/08/addressing"
    xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
    <wsp:Policy>
    <sp:InitiatorSignatureToken>
    <wsp:Policy>
    <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
    <wsp:Policy>
    <sp:WssX509V3Token10/>
    </wsp:Policy>
    </sp:X509Token>
    </wsp:Policy>
    </sp:InitiatorSignatureToken>
    <sp:AlgorithmSuite>
    <wsp:Policy>
    <sp:Basic128Rsa15/>
    </wsp:Policy>
    </sp:AlgorithmSuite>
    <sp:Layout>
    <wsp:Policy>
    <sp:Strict/>
    </wsp:Policy>
    </sp:Layout>
    <sp:IncludeTimestamp/>
    <sp:OnlySignEntireHeadersAndBody/>
    </wsp:Policy>
    </sp:AsymmetricBinding>
    <sp:Wss10 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
    xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy"
    xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
    <wsp:Policy>
    <sp:MustSupportRefKeyIdentifier/>
    <sp:MustSupportRefIssuerSerial/>
    </wsp:Policy>
    </sp:Wss10>
    <sp:SignedParts xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
    xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy"
    xmlns:wsa="http://www.w3.org/2005/08/addressing"
    xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
    <sp:Body/>
    <sp:Header Name="Trace"
    Namespace="http://www.sap.com/webas/630/soap/features/runtime/tracing/"/>
    <sp:Header Name="messageId"
    Namespace="http://www.sap.com/webas/640/soap/features/messageId/"/>
    <sp:Header Name="CallerInformation"
    Namespace="http://www.sap.com/webas/712/soap/features/runtime/metering/"/>
    <sp:Header Name="Session"
    Namespace="http://www.sap.com/webas/630/soap/features/session/"/>
    <sp:Header Name="To"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="From"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="FaultTo"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="ReplyTo"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="MessageID"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="RelatesTo"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="Action"
    Namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
    <sp:Header Name="To"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="From"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="FaultTo"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="ReplyTo"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="MessageID"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="RelatesTo"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="Action"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="ReferenceParameters"
    Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="Sequence"
    Namespace="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
    <sp:Header Name="SequenceAcknowledgement"
    Namespace="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
    <sp:Header Name="AckRequested"
    Namespace="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
    <sp:Header Name="SequenceFault"
    Namespace="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
    <sp:Header Name="Sequence"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="AckRequested"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="SequenceAcknowledgement"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="SequenceFault"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="UsesSequenceSTR"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    <sp:Header Name="UsesSequenceSSL"
    Namespace="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
    </sp:SignedParts>
    <sp:SignedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
    xmlns:sapsp="http://www.sap.com/webas/630/soap/features/security/policy"
    xmlns:wsa="http://www.w3.org/2005/08/addressing"
    xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
    <wsp:Policy>
    <sp:SamlToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
    <wsp:Policy>
    <sp:WssSamlV11Token10/>
    </wsp:Policy>
    </sp:SamlToken>
    </wsp:Policy>
    </sp:SignedSupportingTokens>
    </wsp:All>
    </wsp:ExactlyOne>
    <wsaw:UsingAddressing xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
    wsp:Optional="true"/>
    </wsp:Policy>
    <wsp:Policy wsu:Id="IF_IF_YS_SAMLTEST">
    <sapsession:Session xmlns:sapsession="http://www.sap.com/webas/630/soap/features/session/">
    <sapsession:enableSession>false</sapsession:enableSession>
    </sapsession:Session>
    <sapcentraladmin:CentralAdministration xmlns:sapcentraladmin="http://www.sap.com/webas/700/soap/features/CentralAdministration/"
    wsp:Optional="true">
    <sapcentraladmin:BusinessApplicationID>4FF6C4A0570F00E9E10000000A1D140F</sapcentraladmin:BusinessApplicationID>
    </sapcentraladmin:CentralAdministration>
    </wsp:Policy>
    <wsp:Policy wsu:Id="OP_IF_OP_YsSamltest">
    <sapcomhnd:enableCommit xmlns:sapcomhnd="http://www.sap.com/NW05/soap/features/commit/">false</sapcomhnd:enableCommit>
    <sapblock:enableBlocking xmlns:sapblock="http://www.sap.com/NW05/soap/features/blocking/">true</sapblock:enableBlocking>
    <saptrhnw05:required xmlns:saptrhnw05="http://www.sap.com/NW05/soap/features/transaction/">no</saptrhnw05:required>
    <saprmnw05:enableWSRM xmlns:saprmnw05="http://www.sap.com/NW05/soap/features/wsrm/">false</saprmnw05:enableWSRM>
    </wsp:Policy>
    <wsdl:types>
    <xsd:schema attributeFormDefault="qualified"
    targetNamespace="urn:sap-com:document:sap:rfc:functions">
    <xsd:simpleType name="char10">
    <xsd:restriction base="xsd:string">
    <xsd:maxLength value="10"/>
    </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="char40">
    <xsd:restriction base="xsd:string">
    <xsd:maxLength value="40"/>
    </xsd:restriction>
    </xsd:simpleType>
    </xsd:schema>
    <xsd:schema attributeFormDefault="qualified"
    targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style"
    xmlns:n0="urn:sap-com:document:sap:rfc:functions">
    <xsd:import namespace="urn:sap-com:document:sap:rfc:functions"/>
    <xsd:element name="YsSamltest">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="Text" type="n0:char10" minOccurs="0"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="YsSamltestResponse">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="Result" type="n0:char40"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    </wsdl:types>
    <wsdl:message name="YsSamltest">
    <wsdl:part name="parameters" element="tns:YsSamltest"/>
    </wsdl:message>
    <wsdl:message name="YsSamltestResponse">
    <wsdl:part name="parameter" element="tns:YsSamltestResponse"/>
    </wsdl:message>
    <wsdl:portType name="YS_SAMLTEST">
    <wsp:Policy>
    <wsp:PolicyReference URI="#IF_IF_YS_SAMLTEST"/>
    </wsp:Policy>
    <wsdl:operation name="YsSamltest">
    <wsp:Policy>
    <wsp:PolicyReference URI="#OP_IF_OP_YsSamltest"/>
    </wsp:Policy>
    <wsdl:input message="tns:YsSamltest"/>
    <wsdl:output message="tns:YsSamltestResponse"/>
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="YS_SAMLTEST" type="tns:YS_SAMLTEST">
    <wsp:Policy>
    <wsp:PolicyReference URI="#BN_BN_YS_SAMLTEST"/>
    </wsp:Policy>
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
    style="document"/>
    <wsdl:operation name="YsSamltest">
    <soap:operation style="document"/>
    <wsdl:input>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="YS_SAMLTEST_SOAP12" type="tns:YS_SAMLTEST">
    <wsp:Policy>
    <wsp:PolicyReference URI="#BN_BN_YS_SAMLTEST_SOAP12"/>
    </wsp:Policy>
    <wsoap12:binding transport="http://schemas.xmlsoap.org/soap/http"
    style="document"/>
    <wsdl:operation name="YsSamltest">
    <wsoap12:operation style="document"/>
    <wsdl:input>
    <wsoap12:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <wsoap12:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="YS_SAMLTEST">
    <wsdl:port name="YS_SAMLTEST" binding="tns:YS_SAMLTEST">
    <soap:address location="http://poc-sap:8021/sap/bc/srt/rfc/sap/ys_samltest/200/ys_samltest/ys_samltest"/>
    </wsdl:port>
    <wsdl:port name="YS_SAMLTEST_SOAP12" binding="tns:YS_SAMLTEST_SOAP12">
    <wsoap12:address location="http://poc-sap:8021/sap/bc/srt/rfc/sap/ys_samltest/200/ys_samltest/ys_samltest"/>
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>
    ビジネスサービス作成後、以下のエラーを確認するかと思います。
    "[OSB Kernel:398133]The service is based on WSDL with Web Services Security Policies that are not natively supported by Oracle Service Bus. Please select OWSM Policies - From OWSM Policy Store option and attach equivalent OWSM security policy." (See Figure 8参照)
    1964583.gif
    Figure 8: Policy Error
    このエラーはOracle WebLogic ServerがOracle Web Services Managerとは異なり、ECCのWSDLにあるポリシーをサポートしていないために発生します。現時点では、このエラーを避けるためには、サービスポリシー構成を「From OWSM Policy Store」に変更しましょう。ポリシーをOracle Service Bus管理コンソールからのみ設定します。Oracle Service Busサーバーが立ち上がっていれば、必要に応じて、Oracle Web Services ManagerポリシーをOEPEから追加することができます。
    プロキシサービスをビジネスサービスから作成すると、同じポリシーエラーが出てきます。[Policy]タブで Service Policy Configuration[From Pre-defined Policy or WS-Policy Resource]に変更します。Figure 9では、プロキシサービスにはポリシーは不要です。
    1964584.gif
    Figure 9: Create proxy service
    HTTP Transport]タブで、[Authentication]を[Basic]に変更します。これが必要なのは、ビジネスサービスで、Oracle Web Services Managerが認証済みユーザー名を使ってSAML Assertionを生成するためです。

    Oracle Service Busの構成jarファイルをエクスポートします。

    Oracle Service Busの構成


    Oracle Service Bus管理コンソールにアクセスし、OSB構成jarファイルをサーバーにインポートします。
    ビジネスサービスを構成し、Oracle Web Services Managerで作成したカスタムポリシーを追加します。
    Figure 10:  Service Policy Configuration
    ポリシーを適用後、[セキュリティ]タブでプロパティの値を変更できます。
    Figure 11: Policy Overrides
    (注意)ビジネスサービスで振る舞いを変更する必要があれば、ここでポリシーのプロパティ値を変更することができます(例:異なる署名の証明書)。

    テストの前に


    テストの前に検証ポイントをご紹介します。
    OracleとSAPのマシンの時計が同期されていることを確認し、ECCで適切なクロックスキューを設定します。未来の時刻、もしくは定義したクロックスキューよりも大きなタイムスタンプを持つメッセージをOracle Service Busが送信すると、ECCは呼びだしを拒否します。SAML Assertionに含まれているユーザーは、ECCでユーザー·ストアの既存のユーザーとマッピングする必要があります。ECCではユーザー名の大文字と小文字を区別します。
    ECCがOracle Web Services Managerが使うSAML Issuerを受け入れるように設定しておきましょう。
    すべての必要な証明書がキーストアにOracle Web Services ManagerおよびECCにインポートされていることを確認しましょう。

    テスト


    プロキシサービスのWSDL URLを取得し、サービスをテストします。例えば以下のような具合です。
    http://<host>:<port>/TestSecSap/ProxyServices/TestSamlClient?WSDL
    任意のWebサービスクライアントツール(例えばSoapUIなど)を使ってサービスをテストできます。
    WebLogic Serverに作成したユーザーの資格証明を設定することをお忘れなく。

    以下はリクエストメッセージのサンプルです。
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <soapenv:Header/>
    <soapenv:Body>
    <urn:YsSamltest>
    <Text>test</Text>
    </urn:YsSamltest>
    </soapenv:Body>
    </soapenv:Envelope>
    Oracle Web Services Managerがポリシーを適用すると、ECCに送付されるリクエストは次のように変わります。
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <soapenv:Header>
    <wsse:Security soapenv:mustUnderstand="1"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:SecurityTokenReference wsu:Id="STR-SAML-bCgQ6C7G7d3xvJEZ0Ap9Ag22"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID">SAML-l0sKvVtSFWBxVSfO8DOYOQ22</wsse:KeyIdentifier>
    </wsse:SecurityTokenReference>
    <wsu:Timestamp wsu:Id="Timestamp-B8oMUcneIEM0FBP1WSzqiw22"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsu:Created>2013-04-15T20:04:41Z</wsu:Created>
    <wsu:Expires>2013-04-15T20:09:41Z</wsu:Expires>
    </wsu:Timestamp>
    <wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
    EncodingType="http://docs.oasis-open.org/wss/2004/01/ oasis-200401-wss-soap-message-security-1.0#Base64Binary"
    wsu:Id="BST-umEAXBVw2Neuu90Yk43M6A22"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">MIIG1jCCBb6gAwI...CreDzVTHZz/xXtD2Vl8JsTN/QaKkZ1n88=</wsse:BinarySecurityToken>
    <saml:Assertion MajorVersion="1" MinorVersion="1"
    AssertionID="SAML-l0sKvVtSFWBxVSfO8DOYOQ22"
    IssueInstant="2013-04-15T20:04:41Z"
    Issuer="www.oracle.com"
    xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
    <saml:Conditions NotBefore="2013-04-15T20:04:41Z"
    NotOnOrAfter="2013-04-15T20:09:41Z"/>
    <saml:AuthenticationStatement AuthenticationInstant="2013-04-15T20:04:41Z"
    AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password">
    <saml:Subject>
    <saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">testsamlclient</saml:NameIdentifier>
    <saml:SubjectConfirmation>
    <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:sender-vouches</saml:ConfirmationMethod>
    </saml:SubjectConfirmation>
    </saml:Subject>
    </saml:AuthenticationStatement>
    </saml:Assertion>
    <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
    <dsig:SignedInfo>
    <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    <dsig:Reference URI="#BST-umEAXBVw2Neuu90Yk43M6A22">
    <dsig:Transforms>
    <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    </dsig:Transforms>
    <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <dsig:DigestValue>buSz7W4V5OQ4FTBZKf8YBIpBC1Y=</dsig:DigestValue>
    </dsig:Reference>
    <dsig:Reference URI="#Timestamp-B8oMUcneIEM0FBP1WSzqiw22">
    <dsig:Transforms>
    <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    </dsig:Transforms>
    <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <dsig:DigestValue>psj9Sjk+bPTxUbqu1h8xUahVkrA=</dsig:DigestValue>
    </dsig:Reference>
    <dsig:Reference URI="#STR-SAML-bCgQ6C7G7d3xvJEZ0Ap9Ag22">
    <dsig:Transforms>
    <dsig:Transform Algorithm="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform">
    <wsse:TransformationParameters>
    <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    </wsse:TransformationParameters>
    </dsig:Transform>
    </dsig:Transforms>
    <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <dsig:DigestValue>gMV488pINPLCAhWMzF6YGmBXySc=</dsig:DigestValue>
    </dsig:Reference>
    <dsig:Reference URI="#Body-qp7LuhCcRiNgYpIFe3OIyA22">
    <dsig:Transforms>
    <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    </dsig:Transforms>
    <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <dsig:DigestValue>n6fRqeZ5AOg7GUSST0Y23bIftSg=</dsig:DigestValue>
    </dsig:Reference>
    </dsig:SignedInfo>
    <dsig:SignatureValue>f6TPUUzWLbpPCnpbBBNeIhmy8vp+03V7YWLxCPcSbbPeN1AcUBijFPsH35V90IBmhgbPX366S9Ouu52lYiKNTgWn8UPIEVeKHYKp742dHBSlqyxxVagJ7ddHjHgNbNn5QFuu/re6gcDAOVYwcGRDwpNPg+RnywQKkOfpgxtSdkLWz5ok7TjQcfApnur5gCQvmRsBJwuQcaI3WTuFfWLg5gCj+yazOgUkwb+l7Vbssl8LdTQ1WiQdBKmoAbWci2GL+VFfkaq0dGcYd2/oJLJtrehPiTW6GY/o7TmWY9L8cJOCJo86YPbKjfjn8WHuANe/AQRMAMkKnymUd424xS+C8g==</dsig:SignatureValue>
    <dsig:KeyInfo Id="KeyInfo-KYpO2OdhC7Q6fmBL1fonww22">
    <wsse:SecurityTokenReference>
    <wsse:Reference URI="#BST-umEAXBVw2Neuu90Yk43M6A22"
    ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
    </wsse:SecurityTokenReference>
    </dsig:KeyInfo>
    </dsig:Signature>
    </wsse:Security>
    </soapenv:Header>
    <soapenv:Body wsu:Id="Body-qp7LuhCcRiNgYpIFe3OIyA22"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <urn:YsSamltest>
    <!--Optional: -->
    <Text>test</Text>
    </urn:YsSamltest>
    </soapenv:Body>
    </soapenv:Envelope>
    ECCはリクエストを検証し、レスポンスをOracle Service Busに返します。
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Header xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsu:Timestamp wsu:Id="ts-516B5F24AE9D1010E10080000A1D123D">
    <wsu:Created>2013-04-15T20:04:41Z</wsu:Created>
    <wsu:Expires>2013-04-15T20:06:11Z</wsu:Expires>
    </wsu:Timestamp>
    </wsse:Security>
    </soap-env:Header>
    <soap-env:Body>
    <n0:YsSamltestResponse xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
    <Result>Hello testsamlclient - PARAM: test</Result>
    </n0:YsSamltestResponse>
    </soap-env:Body>
    </soap-env:Envelope>
    Oracle Service Busはレスポンスをクライアントに返します。
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Header xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/>
    <soap-env:Body>
    <n0:YsSamltestResponse xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
    <Result>Hello testsamlclient - PARAM: test</Result>
    </n0:YsSamltestResponse>
    </soap-env:Body>
    </soap-env:Envelope>

    まとめ

    IDの伝播はセキュアな統合において非常に重要ですが、SAMLのようなテクノロジーを適用する方法は常に明快であるとは限りません。この記事が皆様の類似のシナリオにおいてお役に立つことを願っています。

    著者について

    Ronaldo FernandesはブラジルのOracle Consultingチームのprincipal consultantです。専門はOracle Fusion Middleware、SOA、セキュリティで、1996年からJavaテクノロジーを使って業務をしています。アーキテクチャ定義、問題解決、テクニカルリーダーシップおよびソフトウェア開発において15年以上の経験を有しています。

    Baca Selengkapnya ....
    Trik SEO Terbaru support Online Shop Baju Wanita - Original design by Bamz | Copyright of apk zipalign.