【问题标题】:CRM 2011: Reauthentication with _serviceProxy.Authenticate()CRM 2011:使用 _serviceProxy.Authenticate() 重新认证
【发布时间】:2012-08-28 20:13:59
【问题描述】:

我使用 WCF 频道和组织服务为 ms Dynamics 2011 开发了一个客户端软件。创建频道后,我将其放入字典 Dictionary<string, OrganizationServiceProxy> 并等待 8 小时后,安全令牌不再有效。现在我调用serviceProxy.Authenticate() 方法(serviceProxy 是从我的集合中检索到的对象)并且没有任何反应。我的令牌尚未更新,我无法使用我的频道从动态中检索数据。正如我在 msdn 中看到的,Authenticate() 方法应该为我提供一个新令牌,我做错了什么?

【问题讨论】:

    标签: wcf dynamics-crm dynamics-crm-2011 wcf-security


    【解决方案1】:

    您是否尝试过像Performance Best Practices 中描述的那样监控令牌?

    此外,监视您的 WCF 安全令牌 (Token) 并在它过期之前刷新它,这样您就不会丢失令牌而必须重新开始身份验证。要检查令牌,请创建一个继承自 OrganizationServiceProxy 或 DiscoveryServiceProxy 类并实现检查令牌的业务逻辑的自定义类。或者将代理类包装在一个新类中。另一种技术是在每次调用 Web 服务之前显式检查令牌。 演示这些技术的示例代码可以在 Helper Code 中的 ManagedTokenDiscoveryServiceProxy、ManagedTokenOrganizationServiceProxy 和 AutoRefreshSecurityToken 类中找到:ServerConnection Class 主题。

    您将在此类中找到如何自动更新令牌的示例。

    【讨论】:

    • 谢谢,现在我向前迈出了一步。现在我知道,我应该在令牌过期之前调用 .Autheticate() 方法。但在这种情况下,令牌也不会被更新。 Schuold 我不早于令牌过期前 15 分钟进行更新(就像上面在您的示例中使用帮助代码显示的那样)?还是有其他原因,为什么令牌没有更新?
    • @lgor 你好,你发现令牌没有更新的原因了吗?我在这里遇到了同样的问题。我编写了一个单元测试,在调用 authenticate() 方法后检查新的到期日期是否大于旧的到期日期,但结果证明到期日期是相同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多