我在这个页面上做了教程:http://msdn.microsoft.com/en-us/library/gg185927.aspx 我想我做的一切都很好,但我得到了这个例外:
`An error occurred when processing the security tokens in the message.`
我做错了什么?我使用了样品证书。也许我应该创建自己的证书?有什么不同吗?
我注意到硬编码凭证与教程中传递的略有不同,所以我在服务标识中更改了它们。在我这样做之前,我收到了身份验证异常,因此我认为可以更改它。
我没有任何安全方面的经验,但我想最终学习它,所以我希望你们能帮助我:)
编辑:
我不确定这个王国是否还可以。我通过了
http://localhost:7100/Service/Default.aspx
那里。
我在我的本地机器上运行它,我不确定它是否应该这样做。
编辑2:
这是StackTrace:
Server stack trace:
at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at WcfService.IStringService.Reverse(String value)
at WcfClient.Program.Main(String[] args) in c:\Users\Hador\Downloads\Windows Azure AD Access Control (ACS) Code Samples\C#\Webservice\Acs2UsernameBindingSample\WcfClient\Program.cs:line 53
我有这个错误:
string outputString = stringService.Reverse(userInputString);
答案 0 :(得分:1)
似乎您的问题与令牌加密策略以及其中所需的安全性有关......
“令牌加密策略
令牌加密策略确定ACS为依赖方应用程序发出的令牌是否已加密。要要求加密,请选择“要求加密”值。
在ACS中,您只能为SAML 2.0或SAML 1.1令牌配置加密策略。 ACS不支持加密SWT或JWT令牌。
ACS使用包含公钥(.cer文件)的X.509证书加密SAML 2.0和SAML 1.1令牌。然后,通过使用依赖方应用程序拥有的私钥来解密这些加密的令牌。有关获取和使用加密证书的详细信息,请参阅证书和密钥。
在ACS颁发的令牌上配置加密策略是可选的。但是,当您的依赖方应用程序是通过WS-Trust协议使用证明拥有令牌的Web服务时,必须配置加密策略。没有加密令牌,此特定方案无法正常运行。“Taken from here