我正在尝试使用和外部登录方案和openid身份服务器(rediris)在asp核心2中创建一个Web依赖方。
问题是外部身份服务器使用自己的框架(papi),具有以下特征:
问题和解决方案:
我尝试了几种方法,但没有一种允许我返回我的return_url
验证/ OpenidConnect的设置(不起作用):
.AddOpenIdConnect(o =>
{
o.ClientId = "ClientId";
o.ClientSecret = "ClientSecret";
o.ResponseType = "code";
o.Authority = "https://yo.rediris.es/papoid-server.php";
//o.ProtocolValidator.RequireNonce = true;
o.SaveTokens = true;
o.GetClaimsFromUserInfoEndpoint = false;
o.AuthenticationMethod = OpenIdConnectRedirectBehavior.FormPost;
//test with claims
o.ClaimActions.MapUniqueJsonKey("sub", "sub");
o.ClaimActions.MapUniqueJsonKey("name", "name");
o.ClaimActions.MapUniqueJsonKey("profile", "profile");
o.ClaimActions.MapUniqueJsonKey("email", "email");
o.ClaimActions.MapUniqueJsonKey("fullname", "fullname");
o.ClaimActions.MapUniqueJsonKey(ClaimTypes.Email, "email");
o.Scope.Add("openid");
//o.Scope.Add("phone");
o.Scope.Add("email");
o.Scope.Add("address");
}
创建的必要请求:
POST https://yo.rediris.es/papoid-server.php HTTP/1.1
openid.ns=http://specs.openid.net/auth/2.0
&openid.ns.sreg=http://openid.net/extensions/sreg/1.1
&openid.sreg.required=nickname,email
&openid.sreg.optional=fullname
&openid.realm=http://localhost:5002/
&openid.mode=checkid_setup
&openid.return_to=http://localhost:5002/login?nonce=whatevercode
&openid.identity=http://specs.openid.net/auth/2.0/identifier_select
&openid.claimed_id=http://yo.rediris.es/
&openid.assoc_handle={HMAC-SHA1}{5a3294ef}{A8uNlg==}
此后,登录,重定向......在OP提供商中,我需要在http://localhost:5002/login?nonce=whatevercode
中获取正文回复提前致谢