小编kky*_*uck的帖子

将Google OpenID迁移到OpenID Connect:openid_id不匹配

我已按照文档中的内容开始了从Google OpenID迁移到OpenID Connect with OAuth 2.0的过程.我能够成功完成从令牌端点检索id_token中的openid_id和sub的工作流程,但是当我这样做时,openid_id与我们系统中的现有标识符不匹配.阻止我将现有用户映射到新ID并阻止用户登录我们的应用程序(或者可能被允许以其他人身份登录).id的格式正确,但不匹配.

我已将openid.realm参数设置为现有的openid.realm,并将重定向设置为与文档建议的相同.这在本地和我们的天蓝色托管环境中都会发生.我正在使用JWT.JsonWebToken来解码id_token,但我也通过使用google:JWT Decoder上的web托管解码器验证它是否正确解码,我想出了与我们目前不匹配的相同OpenID标识符有那个用户.我还应该注意到我已经尝试添加配置文件范围,但这没有任何区别.

我们正在使用DotNetOpenAuth.OpenId作为原始系统,所以我认为问题并不存在.我已经检查了作为响应的一部分的ClaimedIdentifier,它确实与我们在openId系统中保存的内容相匹配,因此我们不会错误地保存它.

下面是我们用于为auth请求生成Uri的内容.它主要是DotNetOpenAuth.GoogleOAuth2客户端的修改版本.

protected static Uri GetServiceLoginUrl(Uri returnUrl)
    {
        var state = string.IsNullOrEmpty(returnUrl.Query) ? string.Empty : returnUrl.Query.Substring(1);

        return BuildUri(AuthorizationEndpoint, new NameValueCollection
            {
                { "response_type", "code" },
                { "client_id", AppId },
                { "scope", "openid" },
                { "prompt", "select_account"},
                { "openid.realm", CloudServiceConfiguration.GetDNSName() },
                { "redirect_uri", returnUrl.GetLeftPart(UriPartial.Path) },
                { "state", state },
            });
    }

private static Uri BuildUri(string baseUri, NameValueCollection queryParameters)
        {
            var q = HttpUtility.ParseQueryString(string.Empty);
            q.Add(queryParameters);
            var builder = …
Run Code Online (Sandbox Code Playgroud)

c# openid dotnetopenauth google-openid google-oauth

6
推荐指数
1
解决办法
1336
查看次数

标签 统计

c# ×1

dotnetopenauth ×1

google-oauth ×1

google-openid ×1

openid ×1