Sm_AgentApi_LoginAdv()
この関数は、セッション ログインおよびセッション検証を実行します。
casso1283
この関数は、セッション ログインおよびセッション検証を実行します。
ポリシー サーバは、セッション ログイン中にユーザ認証情報を認証し、セッション検証中にセッション仕様を検証します。この関数は
Sm_AgentApi_Login()
と同じように動作します。この関数は、既存の動作とは別に、認証チェーン方式のログインをサポートします。認証チェーンが使用されていない場合は、Sm_AgentApi_Login()
と Sm_AgentApi_LoginAdv()
の間に違いはありません。認証チェーンが使用されていない場合は、入力属性数は 0 で、入力属性配列は NULL です。
構文
int SM_EXTERN Sm_AgentApi_LoginAdv( const void* pHandle, const char* lpszClientIpAddr, /* optional */ const Sm_AgentApi_ResourceContext_t* pResourceContext, const Sm_AgentApi_Realm_t* pRealm, const Sm_AgentApi_UserCredentials_t* pUserCredentials, const long lNumInAttributes, const Sm_AgentApi_Attribute_t* pInAttributes, /* optional */ Sm_AgentApi_Session_t* pSession, long* pNumOutAttributes, Sm_AgentApi_Attribute_t** ppOutAttributes, const char* lpszTransactionId, /* optional */ void* pReserved /* reserved */ );
パラメータ | I/O | 説明 |
pHandle | I | Sm_AgentApi_Init() の ppHandle パラメータで返されるエージェント API セッション ハンドル。 |
lpszClientIpAddr | I | (オプション)ユーザのログイン元のクライアントの IP アドレス。クライアント IP がアスタリスク(*)で始まる場合、ポリシー サーバはこの IP アドレスをログ記録しますが、セッション仕様に照らした検証は行いません。 |
pResourceContext | I | リソース定義構造体へのポインタ。 |
pRealm | I | レルム定義構造体。 |
pUserCredentials | I | ユーザ認証情報定義構造体。 |
NumInAttributes | I | (オプション)ppAttributes 内の属性の数。認証チェーンが使用されていない場合は 0 となります。 |
pInAttributes | I | (オプション)レスポンス属性定義構造体の配列へのポインタ。認証チェーンが使用されていない場合は NULL となります。 |
pSession | O | ユーザ セッション定義構造体。 |
pNumOutAttributes | 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 チェーン認証方式によってリソースが保護される場合に設定される属性の詳細については、「注釈」を参照してください。 |
lpszTransactionId | I | (オプション)エージェントがセキュリティ アクティビティをアプリケーション アクティビティに関連付けるために使用する IDです。ポリシー サーバはこの ID をログ記録します。 |
戻り値
この関数は、以下の属性を返します(利用可能な場合)。
- SM_AGENTAPI_YES。ユーザが認証されました。
- SM_AGENTAPI_NO。ユーザは認証されませんでした。
- SM_AGENTAPI_CHALLENGE。認証にはチャレンジが必要です。
- SM_AGENTAPI_NOCONNECTION。初期化できませんでした。
- SM_AGENTAPI_FAILURE。サーバにアクセスできませんでした。
- SM_AGENTAPI_TIMEOUT。関数がタイム アウトしました。
注釈
リソースが認証チェーン方式で保護されていて、
Sm_AgentApi_LoginAdv()
コールで SM_AGENTAPI_CHALLENGE が返される場合、フォールバック/次の認証方式の詳細を取得するために、ポリシー サーバがチェーンの次の認証をトリガするときに以下のレスポンス属性が返される場合があります。したがって、認証チェーンを使用する場合、これらの属性はポリシー サーバによって入力され、次のチェーンの認証方式の詳細を取得するためにこれらの属性を読み取る必要があります。- SM_AGENTAPI_ATTR_AUTHCHAINSPEC。認証チェーンのチェーンスペックと設定します。
- SM_AGENTAPI_ATTR_CHAINREALMCREDENTIALS。認証情報タイプ コレクタと設定します。Sm_AgentApi_Realm_t(nRealmCredentials)に類似しています
- SM_AGENTAPI_ATTR_CHAINFORMLOC。認証情報を収集するためのリダイレクト先のチャレンジ URL と設定します。Sm_AgentApi_Realm_t (lpszFormLocation)と類似しています
必須の認証情報のみを提供してください(必要な認証情報は Sm_AgentApi_IsProtected() のコールによって決定されます。この関数は Sm_AgentApi_Login() の前にコールされる必要があります)。ユーザ認証情報構造体の未使用のフィールドは、ゼロ初期化される必要があります。認証チェーンを実行するには、コールに入力属性としてチェーンスペックを指定します。チェーンスペックは、ユーザ認証情報と共に、認証チェーンのログインを処理するためにポリシー サーバで必要です。
Sm_AgentApi_LoginAdv() は、Sm_AgentApi_Attribute_t 構造体内の属性を返します。出力属性を解放するには、Sm_AgentApi_FreeAttributes() をコールします。
ログインの成功時、Sm_AgentApi_Session_t 構造体には、セッション仕様が入力されます。この構造体に対してメモリを割り当てている場合には、メモリを手動で解放する必要があります。
Sm_AgentApi_LoginAdv()
を使用してユーザ認証チェーン方式に以下のサンプル コードを照合してください。 例
: この関数の例については、サンプル アプリケーション smtestauthchain.cpp を参照してください。