我使用DotNetOpenAuth.net的示例代码成为我自己的OpenID提供程序(OpenIDProviderWebForm),一切正常,我能够针对NerdDinner测试我的OP。现在我想自定义标识符,如--->
http://www.mydomain.com/user.aspx/Hash(Username+PrivateKey)~Username
当应用尝试
时,一切都在OP端,但在NerdDinner应用程序上HttpRequestInfo clientResponseInfo = new HttpRequestInfo(“GET”,auth,auth.PathAndQuery,headers,null);
响应 = RelyingParty.GetResponse(clientResponseInfo);
(您可以在NerdDinner的AuthController.cs中找到这两行代码)
响应 包含以下错误:
The OpenID Provider issued an assertion for an Identifier whose discovery information did not match.
Assertion endpoint info:
ClaimedIdentifier: http://localhost:57571/user.aspx/76208371132EC7F7A37472C8B4CC2CC37A05B707~sohail
ProviderLocalIdentifier: http://localhost:57571/user.aspx/76208371132EC7F7A37472C8B4CC2CC37A05B707~sohail
ProviderEndpoint: http://localhost:57571/server.aspx
OpenID version: 2.0
Service Type URIs:
Discovered endpoint info: [
{
ClaimedIdentifier: http://localhost:57571/user.aspx/EA467E35736AC22EB60C04C2E9D9594263B60ECB~sohail
ProviderLocalIdentifier: http://localhost:57571/user.aspx/EA467E35736AC22EB60C04C2E9D9594263B60ECB~sohail
ProviderEndpoint: http://localhost:57571/server.aspx
OpenID version: 2.0
Service Type URIs:
http://specs.openid.net/auth/2.0/signon
http://openid.net/extensions/sreg/1.1
}, {
ClaimedIdentifier: http://localhost:57571/user.aspx/EA467E35736AC22EB60C04C2E9D9594263B60ECB~sohail
ProviderLocalIdentifier: http://localhost:57571/user.aspx/EA467E35736AC22EB60C04C2E9D9594263B60ECB~sohail
ProviderEndpoint: http://localhost:57571/server.aspx
OpenID version: 1.0
Service Type URIs:
http://openid.net/signon/1.0
http://openid.net/extensions/sreg/1.1
},
]
任何人都可以帮助我吗?
答案 0 :(得分:1)
依赖方报告提供商正在声明有关标识符的信息,该标识符与OpenID发现产生的标识符不同。
您作为提供者的责任包括确保您的断言与标识符信息匹配。因此,请考虑错误消息中“已发现的端点信息”下的内容,以及为什么它与断言(在其上方)不同。在这种情况下,您的ClaimedIdentifier和ProviderLocalIdentifier URL在断言和发现的数据之间是不同的。这个可能是因为断言标识符上的HTTP GET实际上会在“已发现的端点信息”下生成到URL的HTTP重定向,您需要修复它。