BizTalk 解决 SSO 错误“无法兑换票证,消息中不存在票证”

发布于 2024-07-06 19:47:02 字数 721 浏览 15 评论 0原文

我正在使用 BizTalk Adapter Pack 中的 Oracle 适配器(基于 BTS 2006 R2 的 WCF)。 在“请求-响应”发送端口的配置中,我使用了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 票证。

请帮忙解决这个问题?

I am using Oracle adapter from the BizTalk Adapter Pack (WCF based for BTS 2006 R2). In the configuration of the "solicit-response" send ports, I have used Oracle's username and password to connect to the database.

Now I would like to change that and use the SSO. So far I have created the Affiliate application and mapped the BTS Host Instance "user id" to the Oracle database user details.

When I run the application I am constantly getting the error: "Unable to redeem ticket, no ticket exists in the message".

reading through the BTS documentation I found the following at "ms-help://MS.BTS.2006/BTS06CoreDocs/html/c7bf755c-c37d-4b19-9817-a7f42e1e9656.htm":
In scenarios where an orchestration invokes the send adapter, the BizTalk Messaging Engine sends the message to the MessageBox database. The orchestration should ensure that both the SSOTicket context property and the Microsoft.BizTalk.XLANGs.BTXEngine.OriginatorSID context property of the message that contains the ticket are maintained. When the adapter receives this message from the MessageBox database, the adapter calls the RedeemTicket method with the encrypted ticket to retrieve the back-end credentials from the SSO store. The user designing the orchestration should specifically copy this property to the message.

But I receive a message through SQL integrated connection, that doesn't have the SSO Ticket.

Please help to resolve this issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

远山浅 2024-07-13 19:47:02

您可以在发送端口上的自定义管道组件中添加 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 附属应用程序映射应该按您的预期工作。

You can add an SSO ticket in a custom pipeline component on the send port. The following code works for me:

    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;
    }

This will generate a ticket for the Biztalk host instance service account, so your Oracle affiliate application mapping should work as you expect.

剩一世无双 2024-07-13 19:47:02

您可能需要在 SSO 管理员中的系统属性中“允许票证”。 如果没有它,即使您允许联属应用程序的票证,它也无法工作。

You might need to "Allow tickets" to the System properties in SSO Administrator. Without that it will not work even if you allow tickets to the Affiliate Application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文