2

BizTalk Adapter Pack (BTS 2006 R2 用の WCF ベース) の Oracle アダプターを使用しています。「solicit-response」送信ポートの構成では、Oracle のユーザー名とパスワードを使用してデータベースに接続しました。

ここで、それを変更して SSO を使用したいと思います。ここまでで、アフィリエイト アプリケーションを作成し、BTS ホスト インスタンスの「ユーザー ID」を Oracle データベース ユーザーの詳細にマッピングしました。

アプリケーションを実行すると、「チケットを引き換えることができません。メッセージにチケットがありません」というエラーが常に表示されます。

BTS のドキュメントを読んでいると、"ms-help://MS.BTS.2006/BTS06CoreDocs/html/c7bf755c-c37d-4b19-9817-a7f42e1e9656.htm" で次のことがわかりました。オーケストレーションが送信アダプターを呼び出すシナリオでは、 BizTalk メッセージ エンジンはメッセージをメッセージ ボックス データベースに送信します。オーケストレーションでは、チケットを含むメッセージのSSOTicketコンテキスト プロパティとMicrosoft.BizTalk.XLANGs.BTXEngine.OriginatorSIDコンテキスト プロパティの両方が維持されるようにする必要があります。アダプターは、メッセージ ボックス データベースからこのメッセージを受信すると、暗号化されたチケットを使用して RedeemTicket メソッドを呼び出し、SSO ストアからバックエンド資格情報を取得します。オーケストレーションを設計するユーザーは、このプロパティをメッセージに具体的にコピーする必要があります。

しかし、SSO チケットを持たない SQL 統合接続を介してメッセージを受け取ります。

この問題の解決を手伝ってください。

4

2 に答える 2

4

送信ポートのカスタム パイプライン コンポーネントに SSO チケットを追加できます。次のコードは私にとってはうまくいきます:

    public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
    {
        ISSOTicket ssoTicket = new ISSOTicket();
        pInMsg.Context.Write("SSOTicket", "http://schemas.microsoft.com/BizTalk/2003/system-properties", ssoTicket.IssueTicket(0));
        return pInMsg;
    }

これにより、Biztalk ホスト インスタンス サービス アカウントのチケットが生成されるため、Oracle アフィリエイト アプリケーションのマッピングは期待どおりに機能するはずです。

于 2010-03-05T02:33:33.467 に答える