使用GitLab作为Oauth进行升级

时间:2017-03-27 20:11:51

标签: oauth gitlab upsource

我正在本地地址http://192.168.0.18/上运行GitLab。 Upsource正在http://192.168.0.11/上运行。

我在GitLab上添加了Upsource应用程序作为管理员。我已经设置了客户端ID和秘密令牌,正如GitLab所说。授权设置为http://192.168.0.18/oauth/authorize,令牌设置为http://192.168.0.18/oauth/token,用户数据设置为http://192.168.0.18/api/v4/user(根据GitLab documentation)。在字段映射中,我将用户ID设置为“id”,并将两封电子邮件设置为“email”。

然后,在Upsource的登录页面上,我发誓认证图标。点击它后,GitLab需要记录,用户必须为其帐户授权应用程序:

  

需要授权

     

授权Upsource使用您的帐户?

     

您是管理员,这意味着授予对Upsource的访问权限将允许他们作为管理员与GitLab进行交互。谨慎行事。

     

此应用程序将能够:

     

访问您的API

     

阅读用户信息

Hovewer,点击authorize按钮后,Upsource会显示信息:Authentication failed. Check your credentials and try again.。我犯了什么错?字段映射?

1 个答案:

答案 0 :(得分:2)

哦,我找到了答案。正如经常发生的那样,我在这个问题上花了很多时间,在我提出这个问题之后,我已经有了自己的想法。橡皮鸭的方法,我猜......

我怀疑,问题在于字段映射。

我查看了Chrome中的Network标签,并得到了回复:

  

http://192.168.0.11/hub/auth/login?response_type=token&client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URI]&message=hub-auth-failed&developer_message=getValueByPath%28json%2C+aut%E2%80%A6userIdPath%29%21%21.textValue%28%29+must+not+be+null

我手动完成了所有Gitlab工作流程,然后我就可以登录了 - 在运行http://192.168.0.18/api/v4/user端点后,我获得了用户数据:

  

{ “名称”: “用户名”, “用户名”: “用户名”, “ID”:3 “状态”: “活跃”, “avatar_url”: “http://www.gravatar.com/avatar/94232f2d1f8bb2fe940de439a4df1014?s=80&d=identicon”, “的web_url”: “http://debian/username”, “created_at”: “2017-03-25T22:28:21.375Z”, “is_admin”:真, “生物”:NULL, “位置”:NULL, “Skype的”: “”, “LinkedIn”: “”, “推特”: “”, “WEBSITE_URL”: “”, “组织”:空, “last_sign_in_at”: “2017-03-25T22:28:21.487Z”, “confirmed_at”:“2017年-03-25T22:28:21.376Z “ ”电子邮件“: ”username@username.username“, ”color_scheme_id“:1, ”projects_limit“:100000 ”current_sign_in_at“:” 2017-03-25T22:36:31.853Z ”, “标识”:[], “can_create_group”:真 “can_create_project”:真 “two_factor_enabled”:假, “外部”:假}

问题在于设置ID字段名称。正如我们在上面的JSON数据中看到的那样,id字段应该映射到name / username,而不是id本身。 在这次改变之后,我可以成功登录Upsource。