Sm_AgentApi_Login()
この関数は、セッション ログインおよびセッション検証を実行します。
casso126jjp
この関数は、セッション ログインおよびセッション検証を実行します。
ポリシー サーバは、セッション ログイン中にユーザ認証情報を認証し、セッション検証中にセッション仕様を検証します。ポリシー サーバがセッション ログインを実行するかセッション検証を実行するかは、以下のように、セッション仕様が Sm_AgentApi_Session_t 構造体の
lpszSessionSpec
フィールドに定義されているかどうかによります。- セッション仕様が存在する場合、ポリシー サーバはセッション検証を実行します。セッション検証中、lpszSessionSpecフィールドに特定の長さがある場合、ポリシー サーバは以下のアクションを実行します。
- Sm_AgentApi_Session_t のnMaxTimeoutフィールドに基づき、セッションが期限切れになっていないことを確認します。
- IP アドレスを確認します。
- ユーザがユーザ ディレクトリ存在して、無効化されていないことを確認します。
- セッション仕様が存在しない場合、ポリシー サーバはセッション ログインを実行します。セッション ログイン中、セッション ID が指定されている場合には、認証成功時にこれがセッション ID として使用されます。
構文
int SM_EXTERN Sm_AgentApi_Login (const void* pHandle,const char* lpszClientIpAddr,const Sm_AgentApi_ResourceContext_t* pResourceContext,const Sm_AgentApi_Realm_t* pRealm,const Sm_AgentApi_UserCredentials_t* pUserCredentials,Sm_AgentApi_Session_t* pSession,long* pNumAttributes,Sm_AgentApi_Attribute_t** ppAttributes);
パラメータ | I/O | Description |
pHandle
| I | Sm_AgentApi_Init() の ppHandle パラメータで返されるエージェント API セッション ハンドル。 |
lpszClientIpAddr
| I | ユーザのログイン元のクライアントの IP アドレス。これはオプションのパラメータです。クライアント IP がアスタリスク(*)で始まる場合、ポリシー サーバはこの IP アドレスをログ記録しますが、セッション仕様に照らした検証は行いません。 |
pResourceContext
| I | リソース定義構造体へのポインタ。 |
pRealm
| I | レルム定義構造体。 |
pUserCredentials
| I | ユーザ認証情報定義構造体。 |
pSession
| O | ユーザ セッション定義構造体。 |
pNumAttributes
| O | ppAttributes 内の属性の数。 |
ppAttributes
| O | レスポンス属性定義構造体の配列へのポインタ。 この関数は、以下の属性を返します(利用可能な場合)。 SM_AGENTAPI_ATTR_AUTH_DIR_OID SM_AGENTAPI_ATTR_AUTH_DIR_NAME SM_AGENTAPI_ATTR_AUTH_DIR_SERVER SM_AGENTAPI_ATTR_AUTH_DIR_NAMESPACE SM_AGENTAPI_ATTR_USERMSG SM_AGENTAPI_ATTR_USERDN SM_AGENTAPI_ATTR_USERUNIVERSALID SM_AGENTAPI_ATTR_IDENTITYSPEC 匿名認証方式によってリソースが保護される場合に設定される属性の詳細については、「注釈」を参照してください。 |
戻り値
- SM_AGENTAPI_YES。ユーザが認証されました。
- SM_AGENTAPI_NO。ユーザは認証されませんでした。
- SM_AGENTAPI_CHALLENGE。認証にはチャレンジが必要です。
- SM_AGENTAPI_NOCONNECTION。初期化できませんでした。
- SM_AGENTAPI_FAILURE。サーバにアクセスできませんでした。
- SM_AGENTAPI_TIMEOUT。関数がタイム アウトしました。
注釈
認証イベントが発生すると、レスポンス属性が返されることがあります。「レスポンス属性」に述べられているように、既知の属性とポリシーベースの属性の両方が返される可能性があります。たとえば、認証の成功時、レスポンスはユーザの DN を返すことがあります。
リソースが匿名認証方式によって保護されている場合、以下の属性のみが設定されます。
- SM_AGENTAPI_ATTR_USERDN。匿名セッションの SessionID を設定します。
- SM_AGENTAPI_ATTR_IDENTITYSPEC。匿名セッションのグローバルに一意の識別チケットを設定します。
必須の認証情報のみを提供してください(必要な認証情報は Sm_AgentApi_IsProtected() のコールによって決定されます。この関数は Sm_AgentApi_Login() の前にコールされる必要があります)。ユーザ認証情報構造体の未使用のフィールドは、ゼロ初期化される必要があります。
Sm_AgentApi_Login() は、Sm_AgentApi_Attribute_t 構造体内の属性を返します。属性を解放するには、Sm_AgentApi_FreeAttributes() をコールします。
ログインの成功時、Sm_AgentApi_Session_t 構造体には、セッション仕様が入力されます。この構造体に対してメモリを割り当てている場合には、メモリを手動で解放する必要があります。
例
この関数の例については、サンプル アプリケーション smagentexample.cpp を参照してください。