Tuesday Oct 18, 2005

JES: Zero Page Login using Java ES Access Manager

Access Manager のログイン URL には IDToken というパラメーターがあります。これを使うと ユーザーID、パスワードを入力なしで Access Manager を認証として使っているアプリケーションに直接ログインすることができます。

http://am.japan.sun.com/amserver/UI/Login?module=LDAP&IDToken1=ユーザー名&IDToken2=パスワード

以前 Java ES 製品の Access Manager を使った SSO の設定 をしましたよね。Calendar Server や Messaging Server、Portal Server 、Communication Express も Access Manager を使っていることになります。したがってそれらの製品に使うことができます。たとえば Messaging Express の URL が http://ms.japan.sun.com:8100 とするとここに直接ログインするには

http://am.japan.sun.com/amserver/UI/Login?module=LDAP&IDToken1=ユーザー名&
              IDToken2=パスワード&goto=http://ms.japan.sun.com:8100

のように goto パラメーターでアプリケーションの URL を指定してあげます。また Communication Express が http://ce.japan.sun.com/uwc とすると

http://am.japan.sun.com/amserver/UI/Login?module=LDAP&IDToken1=ユーザー名&
              IDToken2=パスワード&goto=http://ce.japan.sun.com/uwc

となりますね。

もちろん URL パラメーターにパスワードが含まれるわけですから注意して使わないといけないわけですが、繰り返しログインの操作を行わないといけないようなソフトウェア の試験やパフォーマンスの計測、また匿名アクセスなど用途には使えますよね。私はこれを Portal Server のポータルデスクトップの編集の時に使っていたのですがとっても便利でした。

Sun Java System Access Manager 6 2005Q1 管理ガイド :「ユ—ザーインタフェースのログイン URL」 に説明が載っていますので参考にして下さい。

Monday Oct 10, 2005

JES: Access Manager の amadmin を使いこなそう

サーバー製品の管理ツールというとブラウザ上で管理コンソールを使うもの、特別なクライアントプログラムを使うもの、あとはコマンドラインの管理ツールを使うものがありますね。Portal Server のディスプレイプロファイルを管理するコマンドは dpadmin でした。Access Manager の場合は amadmin コマンドです。このようなコマンドラインの管理コマンドはとっても便利です。テンプレートなどをファイルにとっておいてそれを引数にできます。複数のマシンに同じ設定をしたい場合やソフトウェアを再設定する場合には短時間に間違いなく設定をすることができます。Portal Server のディスプレイプロファイルを設定する方法をいくつか書きましたがこれを管理コンソールでやろうとしたらとても面倒ですよね。ブラウザで管理者が毎回設定を行うのはどうしても間違いが起こりやすく設定ミスの原因になります。ブラウザのインターフェースはできるだけ確認用のみに使ってコマンドラインの管理コマンドを有効活用してみましょう。

今回は Access Manager のコマンドライン管理ツール amadmin を使ってみましょう。

テンプレートを活用しよう

/opt/SUNWam/samples/admin/cli/ ディレクトリには amadmin で使うファイルの例がいろいろ置いてあります。amadmin にこれらのファイルを引数として渡してあげます。では例えば組織に割り当てられているサービスを取得するにはどうしたらよいでしょうか。実際にやってみますね。

組織のサービスを取得する - orgGetRegisteredServiceRequests.xml

このファイルを開いてみて下さい。次のような内容になっています。組織の DN は変更して dc=japan,dc=sun,dc=com にしてあります。GetRegisteredServiceNames でその組織のサービスを取得できることがわかりますね。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE Requests

    PUBLIC "-//iPlanet//Sun Java System Identity Server 2004Q2 Admin CLI DTD//EN"

    "jar://com/iplanet/am/admin/cli/amAdmin.dtd"

>


<!--  CREATE REQUESTS -->


<Requests>


  <OrganizationRequests DN="dc=japan,dc=sun,dc=com">

    <GetRegisteredServiceNames/>

  </OrganizationRequests>


</Requests>

amadmin には amadmim ユーザーID とパスワード、-t の次にファイル名を書きます。

# /opt/SUNWam/bin/amadmin -u uid=amadmin,ou=people,dc=japan,dc=sun,dc=com \\
-w passwd -t orgGetRegisteredServiceRequests.xml

実際に実行してみましょう。次のような結果が得られます。
組織: dc=japan,dc=sun,dc=com

登録されたサービスの取得:

  SunPortalNetMailService

  iPlanetAMAdminConsoleService

  iPlanetAMAuthMembershipService

  SunPortalSubscriptionsService

  srapProxyletService

  SunMobileAppMailService

  iPlanetAMProviderConfigService

  SunPortalWSRPProducerService

  iPlanetAMAuthLDAPService

  SunPortalDesktopService

  srapGatewayAccessService

  iPlanetAMAuthenticationDomainConfigService

  iPlanetAMAuthService

  iPlanetAMPolicyConfigService

  iPlanetAMPolicyService

  iPlanetAMUserService

  SunSSOAdapterService

  SunPresence

  SunMobileAppABService

  SunPortalWSRPConsumerService

  srapNetFileService

  iPlanetAMAuthConfiguration

  SunMobileAppCalendarService

  srapNetletService

  SunIM

成功 0: 完了しました

#

ユーザーにサービスを追加する - userRegisterServiceRequests.xml


ユーザーを追加したときにサービスを追加するプログラムを書いてみましょう。GetRegisteredServiceNames で組織のサービスを取得したのでこれらの値を使って今度はユーザーにサービスを割り当てればよいですよね。

userRegisterServiceRequests.xml というファイルを今度は参考にしてください。対象ユーザーの DN を指定して、RegisterServices の Service_Name でサービスを列挙すれば OK です。


<Requests>

<UserRequests DN="uid=user02,ou=people,dc=japan,dc=sun,dc=com">

    <RegisterServices>

  <Service_Name>SunIM </Service_Name>

  <Service_Name>SunMobileAppABService </Service_Name>

  <Service_Name>SunMobileAppCalendarService </Service_Name>

  <Service_Name>SunMobileAppMailService </Service_Name>

  <Service_Name>SunPortalDesktopService </Service_Name>

  <Service_Name>SunPortalNetMailService </Service_Name>

  <Service_Name>SunPortalSubscriptionsService </Service_Name>

  <Service_Name>SunPresence </Service_Name>

  <Service_Name>SunSSOAdapterService </Service_Name>

  <Service_Name>iPlanetAMAuthConfiguration </Service_Name>

  <Service_Name>iPlanetAMUserService </Service_Name>

  <Service_Name>srapGatewayAccessService </Service_Name>

  <Service_Name>srapNetFileService </Service_Name>

  <Service_Name>srapNetletService </Service_Name>

  <Service_Name>srapProxyletService </Service_Name>

    </RegisterServices>

</UserRequests>

</Requests>
このように amadmin では現在の設定値を取得したり、設定したりすることができますので、これを使っていろいろなスクリプトを用意できますよね。いくつか例���あげて������ます。


組織にサービスを追加する


myorg という組織にサービスを追加します。この段階ではまだテンプレートは作成されていません。

<Requests>

  <OrganizationRequests DN="o=myorg,dc=japan,dc=sun,dc=com">

    <RegisterServices>

      <Service_Name>iPlanetAMPolicyConfigService</Service_Name>

    </RegisterServices>

   </OrganizationRequests>

</Requests>

テンプレートを作成する


追加したサービスをテンプレートを amadmin でつくってみましょう。CreateServiceTemplate で作成することができます。

<Requests>

  <OrganizationRequests DN="o=myorg,dc=japan,dc=sun,dc=com">

    <CreateServiceTemplate>

      <Service_Name>iPlanetAMPolicyConfigService</Service_Name>

    </CreateServiceTemplate>

   </OrganizationRequests>

</Requests>


組織に Membership 認証モジュールを使うように設定する



<Requests>

   <SchemaRequests serviceName="iPlanetAMAuthService" SchemaType="Organization">

     <AddDefaultValues>

       <AttributeValuePair>

         <Attribute name="iplanet-am-auth-allowed-modules"/>

         <Value>Membership</Value>

       </AttributeValuePair>

     </AddDefaultValues>

   </SchemaRequests>

</Requests>


ユーザープロファイル設定を「動的」にする


<Requests>

   <SchemaRequests serviceName="iPlanetAMAuthService" SchemaType="Organization">

     <AddDefaultValues>

       <AttributeValuePair>

         <Attribute name="iplanet-am-auth-allowed-modules"/>

         <Value>Membership</Value>

       </AttributeValuePair>

     </AddDefaultValues>

   </SchemaRequests>

</Requests>

Tuesday Oct 04, 2005

JES: Policy Agent を使ってみよう(3): ポリシーの設定

今回は実際にポリシーを作って簡単な URL プロテクトをしてみましょう。ポリシーは Access Manager 上で作成します。

http://am.japan.sun.com/amconsole

から amadmin とパスワードで Access Manager 管理コンソールにログインします。「アイデンティティ管理」タブをクリックし、「表示」メニューから「ポリシー」を選択します。「新規...」ボタンを押して新しいポリシーを 作っていきます。まず適用に名前を 入れて「標準」ポリシーを作 成します。その後にいろいろ設定していき ます。作成されたポリシーを右側の区画に表示し「表示」 メニューから 「ルール」、「サブジェクト」、「条件」を設定していきます。

ポリシーはこの「サブジェクト」 と「条件」によって評価され ます。

ルール

ルールには次のようなものがあります。この場合は「URL ポリシーエージェント」 を選択しましょう。



リソース名

URL ポリシーエージェントを選択すると次の画面ではリソース名を入力する人があります。ルール名は適当でかまいません。リソースにはプロテクトしたい URL を書きます。\* を使うことができますのでここでは対象となる URL を

http://policyagent.japan.sun.com/protected/\*

のように書くことが出来ます。GET、POST で許可するかどうかを指定できます。



サブジェクト

サブジェクトには次のようなものがあります。誰を対象としているかというのを設定します。ここでは単純に LDAP ユーザーを許可することにしましょう。許可したいユーザーを指定します。


条件

さらに IP アドレスや時刻などの条件を加えることができます。今回の例では条件は作成しませんでした。



Access Manager にログイン

さて実際に動かして見ましょう。プロテクトされた URL にアクセスするとどうなるでしょうか。次のように Access Manager のログインページにリダイレクトされます。



ログインが成功した後要求したページの表示が許可されているか拒否されているかが評価されます。

成功

評価が成功すると要求されたページが表示されます。



失敗

ポリシーが拒否されていると評価された場合には次のようなページが表示されます。このエ ラーは Web コンテナに Apache を使った時のものです。




このように Policy Agent は Web コンテナと同じホストにインストールされプロテクトされた URL への要求を Access Manager にリダイレクトします。その後ポリシーの評価を行い許可されているか拒否されているかの判断を行います。多数の Web コンテナが参照する Access Manager 上でポリシーは一元管理されることになります。

次回は Web ��プリケーションでのプロテクトをしてみます。

Policy Agent についての詳しい説明は docs.sun.com の Sun ONE Identity Server Policy Agent 2.1 を参照して下さい。
About

NetBeans Globalization

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today