ポリシー サーバのカスタマイズ
以下の API により、ポリシー サーバに対するカスタム拡張を開発することができます。
sm1252sp1jjp
以下の API により、ポリシー サーバに対するカスタム拡張を開発することができます。
- 認証 API
- 許可 API
- イベント API
- ディレクトリ API
たとえば、以下を作成できます。
- 外部のビジネス ロジックに基づき動的な許可を行うアクティブなポリシー
- 外部のデータ ソースから値を返すアクティブなレスポンス
- 外部のビジネス ロジックに基づいて動的に許可を行うアクティブなルール
- カスタム認証方式
- ポリシー サーバによって発行されたイベントをキャプチャするイベント ハンドラ、
- カスタム ネームスペース内のデータからのユーザ ディレクトリ
認証および認可 API での動作
ポリシー サーバは、カスタム認証および認可タスクを実行するために使用できる複数のフックを公開します。また、フックは
CA Single Sign-on
エージェントによって保護されるアプリケーションへのカスタム データの配信を有効にするために使用できます。これらのフックを使用することで、CA Single Sign-on
と既存のインフラストラクチャの間の密接な統合が可能になります。認証フック
このフックを使用するには、認証 API を使用して、カスタム認証方式を構築する必要があります。カスタム認証方式は、ユーザの特定、認証およびインパーソネーション問題に対する管理を担うことができます。カスタム認証方式は、ユーザの認証試行を受理または拒否することができ、それを行うための数値的理由およびテキスト メッセージを指定できます。この数値的理由およびテキスト メッセージは、アプリケーションが適切な処置を講ずることができるように、アプリケーションに提供されます。これにより、アプリケーションはユーザが最後に認証されるまで、認証方式とのコミュニケーションを維持することができます。
認可フック
このフックを使用するには、許可 API を使用して、カスタム認可モジュールを構築する必要があります。カスタム認可モジュールは、
CA Single Sign-on
ルールおよびポリシーがユーザのリソースへのアクセスを許可するかどうかを制御します。カスタム データ フック
このフックを使用するには、外部データ ソースからデータを取得し、このデータをポリシー サーバに返すカスタム モジュールを構築する必要があります。その後、ポリシー サーバはそのデータを
CA Single Sign-on
によって保護されたアプリケーションに配信します。CA Single Sign-on
は、このデータを解釈しません。CA Single Sign-on
イベントポリシー サーバは、各認証および認可の後にトリガされる場合がある複数のイベントを定義します。
CA Single Sign-on
ポリシーは、これらのイベントをキャッチし、適切なデータを CA Single Sign-on
エージェントによって保護されたアプリケーションに返すために使用されます。イベントは、アプリケーション ワークフローを実行するために使用できます。イベントには、認証と認可の 2 つのタイプがあります。認証イベント
ポリシー サーバは、認証の結果に基づいて認証イベントを開始します。認証のイベントには次のものが含まれます。
- OnAuthAccept
- OnAuthReject
- OnAuthChallenge
- OnAuthAttempt
適切な認証イベントを使用することで、ユーザが認証された直後に、レスポンスが累積され、アプリケーションに配信されます。
許可イベント
ポリシー サーバは、認可の結果に基づいて認可イベントを開始します。認可のイベントには次のものが含まれます。
- OnAccessAccept
- OnAccessReject
適切な許可イベントを使用することで、ユーザがリソースへのアクセスを許可された直後に、レスポンスが累積され、アプリケーションに配信されます。
モジュール呼び出しの間のデータ保存
ポリシー サーバがカスタム モジュールへの呼び出しを行うときは、それらの間で要求特有の情報を通信することがこれらのモジュールに都合がよい場合があります。認証、許可またはディレクトリ API で構築されたカスタム モジュールは、モジュール呼び出し間の状態を保存できます。状態を保存するには、(SmApi.h で定義された)Sm_Api_Context_t 構造で提供されるメモリ管理フックを使用します。状態には要求限定範囲があり、プロセスの単一のインスタンスに制限されています。すなわち、認証サーバのコンテキストで実行されるカスタム モジュールは、認可サーバのコンテキストで実行されるモジュールと状態を交換できません。
汎用ユーザ属性
ユーザ プロファイルに保存されないユーザ プロパティを説明するデータを返すことが必要な場合があります。通常、このデータは、
CA Single Sign-on
によって管理され認識されている何らかの動的な情報です。動的な情報は、汎用のまたは偽のユーザ属性を使用して提供されます。属性が標準のユーザ属性を表す場合、標準的なレスポンス メカニズムまたはカスタム モジュールはこれらの属性にアクセスできます。これらの属性は以下にリスト表示される通り SM_ から始まります。SM_USERNAME
認証されたユーザの場合、これは
CA Single Sign-on
によって特定されるユーザ DN です。認証されていないユーザの場合、これはログイン時にユーザが指定するユーザ ID です。SM_USERIMPERSONATORNAME
認証方式でインパーソネーションが実行される場合、これは
CA Single Sign-on
によって認証されるユーザ DN です。SM_USERLOGINNAME
これはログイン時にユーザが指定するユーザ ID です。
SM_USERLOGINFAILURESCOUNT
失敗したログインの回数で、int 値として表されます。パスワード ポリシー状態属性の 1 つです。
SM_USERIPADDRESS
認証時または許可時のユーザの IP アドレス。
SM_USERPATH
認証されたユーザの場合、これはディレクトリ ネームスペースとディレクトリ サーバ(いずれもユーザ ディレクトリ定義で指定される)、およびユーザ DN (
CA Single Sign-on
によって特定される)を表す文字列です。例:"LDAP://123.123.0.1/uid=scarter,ou=people,o=airius.com"
認証されていないユーザの場合は、SM_USERNAME と同じです。
SM_USERPREVIOUSLOGINTIME
ユーザの前回のログイン時間で、GMT time_t 値として表されます。パスワード ポリシー状態属性の 1 つです。この値は読み取り専用(取得)で、設定できません。値は、ポリシー サーバ システムのエポック タイムからの経過時間を表します。エポック タイムは 1970 年 1 月 1 日 00:00:00 UTC です。(Mac OS マシンがクライアントとして実行している場合、そのエポック タイムは現地時間 1904 年 1 月 1 日 00:00:00 です。)パスワード ポリシー状態属性の 1 つです。
SM_USERPASSWORD
これはログイン時にユーザが指定するパスワードです。値は認証時時にのみ返され、許可時には返されません。
SM_TRANSACTIONID
エージェントによって生成されるトランザクション ID です。
SM_USERDISABLEDTIME
ユーザが無効になった時間で、GMT time_t 値として表されます。パスワード ポリシー状態属性の 1 つです。この値は読み取り専用(取得)で、設定できません。値は、ポリシー サーバ システムのエポック タイムからの経過時間を表します。エポック タイムは 1970 年 1 月 1 日 00:00:00 UTC です。(Mac OS マシンがクライアントとして実行している場合、そのエポック タイムは現地時間 1904 年 1 月 1 日 00:00:00 です。)パスワード ポリシー状態属性の 1 つです。
SM_USERLASTPWCHANGETIME
ユーザが最後にパスワードを変更した時間で、GMT time_t 値として表されます。値は、ポリシー サーバ システムのエポック タイムからの経過時間を表します。エポック タイムは 1970 年 1 月 1 日 00:00:00 UTC です。(Mac OS マシンがクライアントとして実行している場合、そのエポック タイムは現地時間 1904 年 1 月 1 日 00:00:00 です。)パスワード ポリシー状態属性の 1 つです。
注:
この値を設定し、関連するパスワードが CA Single Sign-on
の外部でリセットされる場合、パスワード再利用を防ぐパスワード ポリシーが予期したように動作しない場合があります。SM_USERPASSWORDHISTORY
パスワード ポリシー状態属性の 1 つです。最大 32 エントリまでのパスワード変更情報がすべて含まれ、文字列値として表されます。暗号化および構造化された、バイナリ情報が含まれます。パスワード状態 API は、この構造に関する詳細を外部アプリケーションに公開しません。
注:
この属性は、空の文字列を使用して全履歴をクリアすることによってのみ「設定」できます。他の履歴変更は許可されていません。1 つの履歴エントリのみを追加したり削除することはできません。この属性に対する読み取り(取得)はありません。SM_USERSESSIONSPEC
ユーザのセッション仕様。
SM_USERSESSIONID
すでに認証されたユーザのセッション ID。これは認証の成功時にユーザに割り当てられるセッション ID です。
SM_USERSESSIONIP
最初のユーザ認証時(セッションの確立時)に使用された IP アドレス。
SM_USERSESSIONUNIVID
ユーザのユニバーサル ID。ユーザ ディレクトリ定義にユニバーサル ID ディレクトリ属性の指定がない場合には、これはデフォルトでユーザの DN に設定されます。
SM_USERSESSIONDIRNAME
ポリシー サーバが使用するように設定されているユーザ ディレクトリの名前。
SM_USERSESSIONDIROID
ポリシー サーバが使用するように設定されているユーザ ディレクトリのオブジェクト ID。
SM_USERSESSIONTYPE
ユーザのセッション タイプ。以下のいずれか 1 つ:
- 2 - セッション
- 1 - ID
SM_USERLASTLOGINTIME
ユーザの最後のログイン時間で、GMT time_t 値として表されます。適用可能なパスワード サービス ポリシーがある認証時にのみ利用可能です。パスワード ポリシー状態属性の 1 つです。
SM_USERGROUPS
ユーザが属するグループ。ユーザがネストされたグループに属する場合には、この属性には階層の最下位にあるグループが含まれます。ユーザが属するすべてのネストされたグループについては、SM_USERNESTEDGROUPS を使用してください。
たとえば、ユーザ JSmith がグループ Accounting グループに含まれるグループ Accounts Payable に属する場合、SM_USERGROUPS には Accounts Payable グループが含まれます。Accounting グループと Accounts Payable グループの両方を使用するには、SM_USERNESTEDGROUPS を使用します。
SM_USERNESTEDGROUPS
ユーザが属するネストされたグループ。階層の最下位にあるグループについてのみ、SM_USERGROUPS を使用してください。
たとえば、ユーザ JSmith が、Accounting グループに含まれる Accounts Payable グループに属する場合、SM_USERNESTEDGROUPS には Accounting グループと Accounts Payable グループが含まれます。Accounting グループのみを使用する場合には、SM_USERGROUPS を使用します。
SM_USERSCHEMAATTRIBUTES
DN に関連付けられたユーザ属性、またはユーザに関連付けられたプロパティ。ユーザディレクトリが SQL データベースの場合、SM_USERSCHEMAATTRIBUTES には、ユーザデータが格納されているテーブルの列名が格納されます。たとえば、SmSampleUsers スキーマを使用している場合には、SM_USERSCHEMAATTRIBUTES には、SmUser テーブルの列名が格納されます。
SM_USERPOLICIES
これらには、リソースに対しユーザを認可するポリシーの名前が含まれます。たとえば、商品を購入できるのは Buyer ポリシーに関連付けられたユーザに限定されているとします。ユーザが商品の購入を正常に許可された場合、SM_USERPOLICIES には Buyer が含まれます。
関連付けられたルールに対するアクションが許可イベントに設定され、指定されたイベントが OnAccessAccept であるときは、SM_USERPOLICIES には値が含まれているのみです。
SM_USERPRIVS
ユーザがリソースへのアクセスを許可または認証されている場合、SM_USERPRIVS 属性には、そのユーザに適用されるすべてのポリシー ドメイン内のすべてのポリシーのレスポンス属性がすべて格納されます。
SM_USERREALMPRIVS
ユーザがレルムにあるリソースへのアクセスを許可または認証されている場合、SM_USERREALMPRIVS 属性には、そのレルムのすべてのルールのすべてのレスポンス属性が格納されます。
たとえば、「Equipment Purchasing」と呼ばれるレルムがあると仮定します。このレルムには、CheckCredit ルールがあります。さらに、この CheckCredit ルールには、購入者のクレジット上限(limit = $15000 など)をレスポンス属性として返すレスポンスが関連付けられています。購入者が 5000 ドル相当の装置を購入しようとすると、CheckCredit ルールが起動します。この場合、SM_USERREALMPRIVS には、Equipment Purchasing レルムの下にあるすべてのルールのレスポンス属性がすべて格納されます。
SM_USERDISABLEDSTATE
ユーザが無効化された理由のビット マスクを表す 10 進数です。このビットは Sm_Api_DisabledReason_t データ構造体下の SmApi.h で定義されています。
たとえば、ユーザが一定の時間何も操作を行わなかった場合には、Sm_Api_Disabled_Inactivity という理由で無効化されます。Sm_Api_DisabledReason_t では、理由 Sm_Api_Disabled_Inactivity は、値 0x00000004 に対応します。したがって、この場合には SM_USERDISABLEDSTATE は 4 になります。
NTUSERNAME
完全修飾 WinNT 名のユーザ名の一部を返します。たとえば、mydomain\myname の場合は、myname が返されます。
NTFULLUSERNAME
完全修飾 WinNT 名を返します。
パスワードの取得
いくつかのアプリケーションは、ユーザ認証情報についてのナレッジを必要とします。
CA Single Sign-on
は既知の属性 SM_USERPASSWORD を返すことによりユーザ パスワードをアプリケーションで利用可能にできます。この属性は、OnAuthAccept を通じて認証が成功した場合にのみ使用できます。以下の例ではパスワードの取得について実証します。
char lpszSmPassword(128);int nBytes =lpUserContext->fGetProp(lpUserContext->lpParam,"SM_USERPASSWORD",sizeof (lpszSmPassword),lpszSmPassword);
Web エージェントとの統合
ポリシー サーバは Web エージェントと連係して動作します。Web エージェントが認証および認可している間、ポリシー サーバは操作の結果に関する情報を Web エージェントに送信します。Web エージェントはこの情報を以下のようにアプリケーションに利用可能にします。
リダイレクトのない認証イベント
- ユーザ メッセージは HTTP_SM_USRMSG ヘッダ変数として公開されます。
- 理由コードは HTTP_SM_AUTHREASON ヘッダ変数として公開されます。
リダイレクトのある認証イベント
- ユーザのメッセージは SMUSRMSG=<text> として SMUSERMSG Cookie に保存されます。
- 理由コードは ?SMAUTHREASON=<reason code> としてリダイレクト URL に追加されます。理由コードが以下のフォームに含まれている場合SMAUTHREASON=$$SMAUTHREASON$$値は、ユーザ名およびパスワードと共に SM_AGENTAPI_LOGIN 用の認証理由フィールドで使用されます。
- リダイレクト テキストは SMTEXT=<text> として SMTEXT Cookie に保存されます。
リダイレクトのない許可イベント
- 利用可能な理由コードはありません。
リダイレクトのある許可イベント
- 理由コードは SMREASON=<reason code> として SMREASON Cookie に保存されます。
- リダイレクト テキストは SMTEXT=<text> として SMTEXT Cookie に保存されます。