我在网站上使用WIF SSO进行身份验证。一切在开发环境中都很完美。但在部署时我遇到了问题
消息:数据保护操作失败。这可能有 是由于没有为当前加载用户配置文件引起的 线程的用户上下文,可能是线程的情况 冒充。 ExceptionStackTrace:at System.Security.Cryptography.ProtectedData.Protect(Byte [] userData, Byte [] optionalEntropy,DataProtectionScope scope)at Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Encode(字节[] 值)
搜索abt这个问题导致我遇到这个stackoverflow问题 Is it possible to run WIF without LoadUserProfile = True 我添加了提到的代码,但现在我正在
值不能为空
我收到 e.ServiceConfiguration.ServiceCertificate ServiceCertificate null。我的问题是这是什么类型的证书,我在哪里可以在我的配置中定义。我是否需要在ACS上放置相同的证书。
这是我的配置部分
<microsoft.identityModel>
<service>
<audienceUris>
<add value="http://localhost:9494/" />
</audienceUris>
<federatedAuthentication>
<wsFederation passiveRedirectEnabled="true" issuer="https://devworks-sb.accesscontrol.appfabriclabs.com/v2/wsfederation" realm="http://localhost:9494" requireHttps="false" />
<cookieHandler requireSsl="false" />
</federatedAuthentication>
<applicationService>
<claimTypeRequired>
<!--Following are the claims offered by STS 'https://devworks-sb.accesscontrol.appfabriclabs.com/'. Add or uncomment claims that you require by your application and then update the federation metadata of this application.-->
<claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="true" />
<claimType type="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="true" />
<!--<claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" optional="true" />-->
<!--<claimType type="http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider" optional="true" />-->
</claimTypeRequired>
</applicationService>
<issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<trustedIssuers>
<add thumbprint="BE9D0A516BEC2BC820C23D5C2EA79F068C094382" name="https://devworks-sb.accesscontrol.appfabriclabs.com/" />
</trustedIssuers>
</issuerNameRegistry>
</service> </microsoft.identityModel>
感谢名单
答案 0 :(得分:2)
首先你提到部署后出现问题,是吗?在您的web.config中,您是否已将audienceUris更改为http://whatever_service_name.cloudapp.net?
<audienceUris>
<add value="http://localhost:9494/" /> <== This is wrong
</audienceUris>
接下来,您在e.ServiceConfiguration.ServiceCertificate上关于证书的问题为NULL,请验证以下内容:
一个。端点将添加到您的应用程序服务定义中:
B中。证书指纹在服务配置
中设置℃。证书在web.config中设置,在上面是正确的
d。最后在web.config中添加了以下内容,因此可以通过thumbprint搜索证书:
<serviceCertificate>
<certificateReference x509FindType="FindByThumbprint" findValue="CERT_THUMB" />
</serviceCertificate>
研究这两个非常有用的资源:
http://www.jimandkatrin.com/CodeBlog/post/Troubleshooting-Azure-issues.aspx
http://blogs.msmvps.com/marcelmeijer/blog/2012/05/04/windows-azure-wif-access-control-acs/
答案 1 :(得分:1)
根本原因可能是您正在使用DPAPI(WIF的默认配置)。请尝试对应用程序进行一些修改以在Windows Azure中工作。我建议您查看http://msdn.microsoft.com/en-us/IdentityTrainingCourse_WIFonWAZLab2010以获取教程。
最诚挚的问候,
徐明。