2

我正在使用 BizTalk 适配器包中的 Oracle 适配器(基于 WCF 用于 BTS 2006 R2)。在“solicit-response”发送端口的配置中,我使用了Oracle的用户名和密码来连接数据库。

现在我想改变它并使用 SSO。到目前为止,我已经创建了 Affiliate 应用程序并将 BTS 主机实例“用户 ID”映射到 Oracle 数据库用户详细信息。

当我运行应用程序时,我不断收到错误消息:“无法兑换票,消息中不存在票”。

阅读 BTS 文档后,我在“ms-help://MS.BTS.2006/BTS06CoreDocs/html/c7bf755c-c37d-4b19-9817-a7f42e1e9656.htm”中找到了以下内容:在编排调用发送适配器的场景中, BizTalk 消息引擎将消息发送到 MessageBox 数据库。业务流程应确保维护包含票证的消息的SSOTicket上下文属性和Microsoft.BizTalk.XLANGs.BTXEngine.OriginatorSID上下文属性。当适配器从 MessageBox 数据库接收到此消息时,适配器会使用加密票证调用 RedeemTicket 方法,以从 SSO 存储区检索后端凭据。设计编排的用户应专门将此属性复制到消息中。

但是我通过 SQL 集成连接收到一条没有 SSO 票证的消息。

请帮忙解决这个问题?

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 回答
0

您可能需要“允许票证”到 SSO 管理员中的系统属性。否则,即使您允许会员申请的门票,它也不会起作用。

于 2016-04-14T07:05:51.697 回答