44 JASPICセキュリティの構成
JASPICの仕様(http://www.jcp.org/en/jsr/detail?id=196
)に目を通してください。
この章の内容は次のとおりです。
ここでは、Oracle WebLogic Serverセキュリティの理解のJASPICセキュリティに示されているJASPICの基本的な概要を把握していることを前提とします。
JASPICメカニズムによるWebLogic Serverデフォルトのオーバーライド
Webアプリケーションの認証構成プロバイダを構成すると、そのWebアプリケーションでは、これがWebLogic Server認証メカニズムのかわりに使用されます。JASPIC認証プロバイダは、ユーザーの資格証明を認証し、サブジェクトを返します。
したがって、認証構成プロバイダを指定する際は、これが独自のセキュリティ認証のニーズを満たすように注意する必要があります。
JASPICの構成の前提条件
サード・パーティのサーバー認証モジュール(SAM)や認証構成プロバイダをWebLogic Serverで使用できるようにする方法を含め、使用する環境でJASPICを構成するためには、一定の前提条件があります。
JASPICプログラミング・モジュールについては、JASPIC (Java Authentication Service Provider Interface for Containers)の仕様(http://www.jcp.org/en/jsr/detail?id=196
)で説明されています。
SAM実装のサンプルについては、GlassFish Server Open Source Editionアプリケーション開発ガイドのサーブレット・コンテナへの認証メカニズムの追加に関する項を参照してください。GlassFish Serverの観点から記載されていますが、SAMを記述する際のヒントおよびSAMサンプル自体は有益です。
この項には次のトピックが含まれます:
サーバー認証モジュールがクラスパス内に存在する必要がある
WebLogic Server認証構成プロバイダの構成を計画している場合、WebLogic Serverインスタンスの起動に使用する起動スクリプトまたはコマンドラインから、SAMのjarをシステム・クラスパスに追加する必要があります。これを行わない場合、WebLogic Serverは適切なクラスを見つけることができません。
構成データの場所
JASPICおよび認証構成プロバイダの構成には、WebLogic Server管理コンソールまたはWLST (WebLogic Scripting Tool)を使用できます。JASPICおよび認証構成プロバイダを構成すると、ドメイン規模の認証構成プロバイダの構成データは、ドメインのconfig.xml
ファイルの<jaspic>
要素に格納されます。
たとえば:
<jaspic> <auth-config-provider xsi:type="wls-auth-config-providerType"> <name>WLSAuthConfigProvider-0</name> </auth-config-provider> </jaspic>
デプロイされたWebアプリケーションの認証構成プロバイダを構成すると、WebLogic Server管理コンソール(またはWLST)は、そのWebアプリケーションのデプロイメント・プラン(plan.xml)を、アプリケーション固有の認証構成プロバイダ構成で更新します。たとえば:
<variable> <name>JASPICProvider_AuthConfigProviderName_13210476440805</name> <value>WLSAuthConfigProvider-0</value> </variable> : <variable-assignment> <name>JASPICProvider_AuthConfigProviderName_13210476440805</name> <xpath>/weblogic-web-app/jaspic-provider/auth-config-provider-name</xpath> </variable-assignment>
アプリケーションでデプロイメント・プランを使用しない場合は、かわりにjaspic-provider
デプロイメント記述子要素をweblogic.xml
に追加することができます。
jaspic-provider
は、認証時に使用するために登録するauthConfigProvider
を指定します。たとえば、<wls:jaspic-provider>my-acp</wls:jlaspic-provider>
とします。
ドメインのJASPIC構成
Oracle WebLogic Server管理コンソールを使用してドメインのJASPICを構成できます。
デフォルトでは、JASPICはドメインに対して有効です。つまり、ドメインに対してJASPICプロパティを構成でき、認証構成プロバイダを指定した任意のWebアプリケーションに対してJASPICを使用できます。
WebLogic Server管理コンソールでJASPICを構成するための具体的なステップは、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの「JASPICのためのWebアプリケーションの構成」を参照してください。
ドメインに対してJASPICを無効にすると、そのドメイン内のすべてのWebアプリケーションに対し、それらの構成に関係なく、JASPICは無効になります。
ドメインに対してJASPICを構成するには:
WebアプリケーションのJASPIC構成
認証構成プロバイダがある場合、WebLogic Server管理コンソールを使用して、どれを特定のWebアプリケーションに適用するかを指定できます。
これを行う前に、「ドメインのJASPIC構成」で説明したとおり、まず次のステップを実行する必要があります。
-
ドメインでJASPICを有効にします。
-
WebLogic Server認証構成プロバイダを構成します。または
-
カスタムの認証構成プロバイダを構成します。
このWebアプリケーションのJASPICプロパティを構成するには:
WLSTを使用したJASPICの構成
WLSTを使用してドメインのJASPICを構成したり、WLS認証構成プロバイダまたはカスタム認証構成プロバイダの作成、WLSおよびカスタムのすべての認証構成プロバイダのリスト表示、ドメインに対するJASPICの有効化および無効化などのタスクを実行できます。
WLSTの使用については、『WebLogic Scripting Toolの理解』を参照してください。
ここでは、WLSTにより次のMBeanを構成する必要があります。
追加のMBean情報については、Oracle WebLogic Server MBeanリファレンスを参照してください。
WLS認証構成プロバイダの作成
例44-1では、WLS認証構成プロバイダを作成し、SAMのクラス名を設定して、構成プロパティを設定します。
このサンプルを実行したら、WebLogic Serverを再起動します。
例44-1 WLS認証構成プロバイダの作成
connect('','','t3://host:port') Please enter your username : Please enter your password : ... edit() startEdit() cd('SecurityConfiguration') cd('mydomain') jaspic = cmo.getJASPIC() wacp = jaspic.createWLSAuthConfigProvider('wacp') am = wacp.getAuthModule() am.setClassName('com.my.auth.module.Classname') props = Properties() props.setProperty('property', 'value') am.setProperties(props) save() activate()
カスタムの認証構成プロバイダの作成
例44-2では、カスタムの認証構成プロバイダを作成し、この認証構成プロバイダのクラス名を設定して、構成プロパティを設定します。
このサンプルを実行したら、WebLogic Serverを再起動します。
例44-2 カスタムの認証構成プロバイダの作成
connect('','','t3://host:port') Please enter your username : Please enter your password : ... edit() startEdit() cd('SecurityConfiguration') cd('mydomain') jaspic = cmo.getJASPIC() acp = jaspic.createCustomAuthConfigProvider('cacp') acp.setClassName('com.my.acp.Classname') props = Properties() props.setProperty('property', 'value') acp.setProperties(props) save() activate()
すべてのWLSおよびカスタム認証構成プロバイダのリスト
例44-3は、ドメインのすべての認証構成プロバイダをリストする方法を示しています。
例44-3 すべての認証構成プロバイダのリスト
connect('','','t3://host:port') Please enter your username : Please enter your password : ... edit() startEdit() cd('SecurityConfiguration') cd('mydomain') jaspic = cmo.getJASPIC() jaspic.getAuthConfigProviders()
ドメインのJASPICの有効化
例44-4は、ドメインに対してJASPICを有効にする方法を示しています。
このサンプルを実行したら、WebLogic Serverを再起動します。
例44-4 ドメインのJASPICの有効化
connect('','','t3://host:port') Please enter your username : Please enter your password : ... edit() startEdit() cd('SecurityConfiguration') cd('mydomain') jaspic = cmo.getJASPIC() jaspic.setEnabled(false) save() activate()
ドメインのJASPICの無効化
例44-5は、ドメインに対してJASPICを無効にする方法を示しています。
このサンプルを実行したら、WebLogic Serverを再起動します。
例44-5 ドメインのJASPICの無効化
connect('','','t3://host:port') Please enter your username : Please enter your password : ... edit() startEdit() cd('SecurityConfiguration') cd('mydomain') jaspic = cmo.getJASPIC() jaspic.setEnabled(false) save() activate()