the authentication endpoit username was not found on the configured secure token service

转载:http://luoyong0201.blog.163.com/blog/static/11293052015101395013914/

使用Developer Toolkit在Visual Studio中使用CRM Explorer链接到CRM的时候回报如下错误:The authentication endpoint Username was not found on the configured Secure Token Service! 可能在代码中链接CRM也会报这个错误,还有就是在Outlook客户端中使用CRM也会报错。很多文章都认为是要启动AD FS的 URL 路径为 /adfs/services/trust/13/username 的 终结点,我尝试了,没有解决我的问题。



你可能会在AD FS的日志中看到类似如下的错误信息,该错误的事件ID是 102:
启用联合身份验证服务的终结点时出错。请使用 PowerShell cmdlet 纠正配置错误,然后重新启动联合身份验证服务。 
其他数据 
异常详细信息: 
System.ServiceModel.AddressAlreadyInUseException: 已有针对 IP 终结点 0.0.0.0:808 的侦听器。如果有其他应用程序已在侦听此终结点,或者,如果在服务主机中具有多个服务终结点,这些终结点具有相同的 IP 终结点但绑定配置不兼容,则可能会发生这种情况。 ---> System.Net.Sockets.SocketException: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
   在 System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
   在 System.Net.Sockets.Socket.Bind(EndPoint localEP)
   在 System.ServiceModel.Channels.SocketConnectionListener.Listen()
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.ServiceModel.Channels.SocketConnectionListener.Listen()
   在 System.ServiceModel.Channels.ExclusiveTcpTransportManager.OnOpen()
   在 System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener)
   在 System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback)
   在 System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout)
   在 System.ServiceModel.Channels.ConnectionOrientedTransportChannelListener.OnOpen(TimeSpan timeout)
   在 System.ServiceModel.Channels.TcpChannelListener`2.OnOpen(TimeSpan timeout)
   在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   在 System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
   在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   在 System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   在 Microsoft.IdentityServer.ServiceHost.STSService.StartSTSService(ServiceHostManager serviceHostManager, ServiceState serviceState)

这个我的前一篇文章  Dynamics CRM 2013 IFD部署之五 已经提到过了,重要的事情要说三遍。在前面我提到的文档(Configuring Claims-based Authentication for Microsoft Dynamics CRM Server)的 AD FS port conflict 章节也有说。当然,如果你的AD FS服务器和CRM服务器不是同一台则没有这个问题,这个问题官方说的原因是CRM的 Microsoft Dynamics CRM 沙盒处理服务 (英文是Sandbox Processing Service)侦听808端口,CRM的另外两个服务Microsoft Dynamics CRM Asynchronous Service 和 Web Application Server services 会通过808端口和它交互,而AD FS服务默认也是占用808端口,所以导致了端口冲突 。
解决办法很简单,使用管理员身份打开PowerShell,执行如下命令:Set-ADFSProperties –nettcpport 809 

找到名称为 Active Directory Federation Services 的服务,右击选择 重新启动 。

就可以了


再次申明:博客内容是转载微软CRM的MVP罗勇的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误意味着在安全上下文中找不到身份验证对象。在Spring Security中,身份验证对象存储在安全上下文中,以便在需要时进行访问。如果您尝试在没有经过身份验证的用户的情况下执行受保护的操作,就会出现这种情况。 您可以尝试解决此问题的一种方法是确保在执行受保护的操作之前,用户已经被正确地身份验证,并且他们的身份验证对象已经存储在安全上下文中。例如,您可以使用Spring Security提供的身份验证过滤器来处理身份验证过程,并确保正确配置您的安全配置。 另外,您还可以检查您的代码中是否有任何错误或不正确的配置可能导致身份验证对象无法正确地存储在安全上下文中。 最后,如果您仍然无法解决此问题,您可以尝试搜索类似的错误消息,以查看是否有其他人遇到了相同的问题并找到了解决方法。 ### 回答2: “an authentication object was not found in the securitycontext”是一个常见的错误信息,通常在使用Spring Security框架进行用户身份验证时出现。 当用户尝试进行某些需要身份验证的操作时,Spring Security会在安全上下文中查找与该用户相关的身份验证对象。如果无法找到身份验证对象,就会出现“an authentication object was not found in the securitycontext”的错误。 这通常是由以下原因之一引起的: 1. 用户还未进行身份验证,或者身份验证已过期。 2. 身份验证对象已被删除或失效。 3. 在处理请求时,Spring Security使用了不正确的安全上下文(Security Context)。 为了解决这个问题,我们可以采取以下措施: 1. 确保用户已登录和进行了身份验证。如果需要进行身份验证,请使用Spring Security提供的身份验证机制,如用户名/密码验证或OAuth等。 2. 在Session过期或在用户主动注销时,及时清除相关的身份验证对象。 3. 避免错误地更新或删除安全上下文(Security Context)。 总之,在使用Spring Security进行用户身份验证时,我们需要确保安全上下文中存在有效的身份验证对象,并及时清除无效的对象来避免这个常见的错误。 ### 回答3: “an authentication object was not found in the security context”这个错误信息一般在使用Spring Security进行权限控制的时候出现。这是因为Spring Security在访问受保护的资源前会先检查当前SecurityContext中是否包含了已认证的Authentication对象,如果没有找到该对象,就会抛出此错误。 那么,为什么会出现这个问题呢? 最常见的情况就是用户未登录或登录状态过期。在用户未登录或登录状态过期的情况下,Spring Security没有记录该用户的Authentication对象,因此在访问受保护的资源时会出现“an authentication object was not found in the security context”的错误。 此外,还有可能是代码逻辑错误导致的。比如手动清除了SecurityContextHolder中的Authentication对象、在过滤器链中未正确调用Spring Security的过滤器等。 解决此问题可以通过以下几个方法: 1. 检查用户是否已登录或登录状态是否过期,如果是,则要求用户重新登录或重新获取认证。 2. 检查代码逻辑,确保在访问受保护的资源前已将已认证的Authentication对象放入SecurityContext中。 3. 检查过滤器链配置,确保已正确配置Spring Security的过滤器。 4. 如果以上方法均无法解决问题,可以考虑重启应用程序或重置会话状态等措施。 总之,出现“an authentication object was not found in the security context”的错误需要我们检查代码逻辑和配置,找出错误原因并进行修复。同时,也需要注意用户登录状态的有效期,保证用户在访问受保护的资源时能够正确地被认证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值