送信アダプター用の SSO サポート
エンタープライズ シングル サインオン (SSO) には、ローカル、ネットワーク、およびドメインの境界間で暗号化されたユーザーの資格情報を格納および転送するサービスが用意されています。 トランスポート アダプターを作成する場合は、SSO API を利用して、トランスポート アダプターがバックエンドのアプリケーションにアクセスするために使用するユーザーの資格情報を処理できます。
SSO をサポートしていないトランスポート アダプターは、通常、バックエンド アプリケーションへのアクセスに使用する 1 つの資格情報セットで構成する必要があります。 多くのバックエンド システムの場合、単一のアカウント認証ではすべてのセキュリティの実施に対応できません。 多くのアプリケーションは、それらのアプリケーションにアクセスしているユーザーに応じて異なるアクセス権を提供します。 アダプターは、SSO を使用して、アクセスしようとしているユーザーに基づいてエンドポイントに使用する資格情報を動的に選択できます。
送信アダプターと SSO の連携
SSO をサポートするアダプターを送信し、チケットを検証して引き換え、 ISSOTicket.ValidateAndRedeemTicket API を使用して SSO システムからユーザー資格情報を取得します。 アダプターは、取得した資格情報を使用して送信先エンドポイントを認証します。
次のコードは、送信アダプターが SSO システムからユーザーの資格情報を取得する方法を示しています。
public class MyAdapter : IBTTransport,
IBTTransportConfig,
IBTTransportControl,
IPersistPropertyBag,
IBaseComponent
{
...
private string m_UserName = null;
private string m_UserPassword = null;
// Get user credentials from SSO
// AffiliateAppVal is the name of SSO affiliate
// application for the specific destination endpoint
private void GetUserCredentials(
IBaseMessage message,
string AffiliateAppVal )
{
string creds[] = null;
string externalUserName = null;
ISSOTicket ssoTicket = new ISSOTicket();
creds = ssoTicket.ValidateAndRedeemTicket(
message,
AffiliateAppVal,
0,
out externalUserName);
m_UserName = externalUserName;
m_UserPassword = creds[0];
}
...
}
パーティの解決
パーティの解決パイプライン コンポーネントは、送信者の証明書または送信者のセキュリティ ID (SID) を、対応する構成済み BizTalk Server パーティにマップします。 この情報を使用できるアダプターでは、 WindowsUser と SignatureCertificate という 2 つのシステム メッセージ コンテキスト プロパティを、ダウンストリーム パーティ解決コンポーネントが使用するように設定する必要があります (構成されている場合)。
WindowsUser プロパティには、送信者のドメイン ユーザー (redmond\myBtsUser など) が設定されます。 SignatureCertificate プロパティには、クライアント認証証明書の拇印が設定されます。
パスワードの管理
エンドポイントのプロパティに直接資格情報を設定する場合、バインド ファイルをエクスポートする必要があるときはパスワード フィールドが空になります。 この場合、ユーザーはパスワードを管理者として再入力する必要があります。 この問題を回避するには、資格情報に SSO を使用します。