我正在使用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 Ticket。
请帮忙解决此问题?
答案 0 :(得分: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联盟应用程序映射应该按预期工作。
答案 1 :(得分:0)
你可能需要"允许门票"到SSO管理员中的系统属性。如果没有它,即使您允许加入联盟应用程序的门票也不会起作用。