WCF用户名身份验证 - 教程中的异常

时间:2014-02-04 00:11:15

标签: c# azure acs

我在这个页面上做了教程: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);

1 个答案:

答案 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