我正在使用Azure Active Directory访问控制进行概念验证图4 The fundamentals of Azure identity management是我正在拍摄的模型。由于我需要在深层传统SaaS解决方案中管理我自己的标识,因此我正在建立自己的OpenID提供程序。为此,我使用的是DotNotOpenAuth。在我的香草,#34;你好世界"例如,我构建了一个简单的MVC应用程序,并将其作为依赖方应用程序在我的访问控制服务命名空间中注册,并使用ACS管理服务将DotIOpenAuth.Samples中的OpenIdProviderMvc项目注册为我的OpenID提供程序。这是我注册的视图,
var openIdAddress = new IdentityProviderAddress
{
Address = "...localhost...",
EndpointType = "SignIn"
};
svc.AddRelatedObject(openId, "IdentityProviderAddresses", openIdAddress);
svc.SaveChanges();
这是OpenID Provider端点页面,希望接收OpenID身份验证消息以允许用户登录其他网站。这很有效,当我启动我的依赖方应用程序时,我为DotNetOpenAuth(核心,依赖方及其依赖项)安装了相应的Nuget包,从ACS中的配置调用OpenID提供程序并且登录成功。但是,在重定向到ACS发送到我的命名空间的OpenID响应,(... accesscontrol.windows.net/v2/openid?...)我收到错误响应:
处理您的请求时出错。
HTTP错误代码:502
消息:ACS30000:处理发送到OpenID端点的登录响应时出错 内部消息:ACS30001:无法验证OpenID响应签名 内部消息:ACS90005:外部服务器错误 迹点ID:41338728-fd6e-4299-9efb-ad8684976aae
时间戳:2015-08-10 19:18:28Z
我想知道我需要做些什么才能帮助ACS验证OpenID响应签名。响应看起来不错(格式化为易读性,所以我不会超出我对低声望的链接限制):
https://....accesscontrol.windows.net/v2/openid? 上下文= CH 2 ...
openid.claimed_id = ... /用户/鲍勃
openid.identity = ... /用户/鲍勃
openid.sig = NU ... RS =
和openid.signed = claimed_id,身份,把assoc_handle,op_endpoint,的return_to,response_nonce,ns.alias3,alias3.mode,alias3.type.alias1,alias3.value.alias1,alias3.type.alias2,alias3.value.alias2 ,ns.sreg,sreg.email,sreg.fullname
openid.assoc_handle = WWcF!...
openid.alias3.type.alias2 = ... / namePerson&安培; openid.alias3.value.alias2 =摆锤
openid.ns.sreg = ... openid.net/extensions/sreg/1.1
openid.sreg.email=bob@dotnetopenauth.net
openid.sreg.fullname =鲍勃
这是我应该能够在规则组中处理的吗?我的OpenId提供程序和ACS之间的安全性是否缺少某些内容,例如发送一些与签名算法,指纹或其他内容相关的信息?
谢谢