受信アダプターの SSO のサポート
エンタープライズ シングル サインオン (SSO) には、ローカル、ネットワーク、およびドメインの境界間で暗号化されたユーザーの資格情報を格納および転送するサービスが用意されています。 トランスポート アダプター ライターは SSO API を利用して、トランスポート アダプターがバックエンドのアプリケーションにアクセスするために使用するユーザー資格情報を処理できます。
通常、SSO をサポートしていないトランスポート アダプターは、バックエンド アプリケーションへのアクセスに使用する資格情報のセットを 1 つ使用して構成する必要があります。 多くのバックエンド システムの場合、単一のアカウント認証ではすべてのセキュリティの実施に対応できません。 多くのアプリケーションは、それらのアプリケーションにアクセスしているユーザーに応じて異なるアクセス権を提供します。 アダプターは、SSO を使用して、アクセスしようとしているユーザーに基づいてエンドポイントに使用する資格情報を動的に選択できます。
受信アダプターと SSO の連携
SSO をサポートする受信アダプターは、メッセージを受け取った後、および BizTalk Server にそのメッセージを公開する前に次の手順を実行します。
アダプターは、送信者を偽装し、 ISSOTicket.IssueTicket API を使用して、送信者に代わって SSO チケットを取得します。
SSO チケットが取得できたら、アダプターはシステム名前空間の下のメッセージ コンテキスト プロパティ "SSOTicket" にその SSO チケットを保存します。
次のコードは、チケットの取得方法と、メッセージ コンテキストへのチケットの保存方法を示しています。
public class MyAdapter : IBTTransport,
IBTTransportConfig,
IBTTransportControl,
IPersistPropertyBag,
IBaseComponent
{
...
private string m_SSOToken = null;
// Get a ticket for the sender
private void GetSSOTicket(IntPtr token)
{
bool impersonated = false;
WindowsImpersonationContext wic = null;
if (token != (IntPtr)0)
{
try
{
// Impersonate the user using his security
// token
WindowsIdentity wi =
new WindowsIdentity(token);
wic = wi.Impersonate();
impersonated = true;
// Get an SSO ticket for the impersonated
// user
ISSOTicket ssoTicket = new ISSOTicket();
m_SSOToken = ssoTicket.IssueTicket(0);
}
finally
{
if (impersonated)
// Revert the impersonation
wic.Undo();
}
}
}
...
private void WriteSSOTicketToContext(
IBaseMessage message )
{
if (m_SSOTicket != null)
{
// Write the SSO ticket to the message context
message.Context.Write(
“SSOTicket”,
http://schemas.microsoft.com/BizTalk/2003/system-properties,
m_SSOToken);
}
}
}
パーティの解決
パーティの解決パイプライン コンポーネントは、送信者の証明書または送信者のセキュリティ ID (SID) を、対応する構成済み BizTalk Server パーティにマップします。 この情報を使用できるアダプターでは、構成されている場合、ダウンストリーム パーティ解決コンポーネントによって使用される 2 つのシステム メッセージ コンテキスト プロパティ (WindowsUser と SignatureCertificate) を設定する必要があります。
WindowsUser プロパティには、送信者のドメイン ユーザー (redmond\myBtsUser など) が設定されます。 SignatureCertificate プロパティには、クライアント認証証明書の拇印が設定されます。
パスワードの管理
エンドポイントのプロパティに直接資格情報を設定する場合、バインド ファイルをエクスポートする必要があるときはパスワード フィールドが空になります。 この場合、ユーザーはパスワードを管理者として再入力する必要があります。 この問題を回避するには、資格情報に SSO を使用します。
アダプター エンドポイントに Password プロパティがある場合は、実際の値が SSO Configure Store データベースのクリア テキストに格納されていることに注意してください。 実際には、パスワードはユーザー インターフェイスに "*" として表示されます。 また、このプロパティはネットワークを介して転送され、BizTalk Server のサンプルの ExplorerOM を使用する単純なスクリプトでこのプロパティを読み取ることができます。