公司内部有一个自己实现的单点登录系统(SSO),现在想搭一个gitlab,希望能够通过内部的sso来登录。
查看了gitlab的文档,发现omniauth可以实现,就自己参照现有的Strategy写了一个Strategy,在gitlab的登录界面也可以看到SSO的登录按钮,点击SSO按钮页面会前往SSO的登录地址,在SSO系统登录之后浏览器会跳转回gitlab的url,但是这个时候gitlab页面显示的是404。
通过查看gitlab日志,发现如下报错
AbstractController::ActionNotFound (The action 'sso' could not be found for OmniauthCallbacksController): lib/omniauth/strategies/sso.rb:25:in `callback_phase'查看sso.rb的25行,是如下代码:
def callback_phase ticket = request.params["sso_ticket"] res = post('http://xxxxx/api/user', {:code => ticket}) @raw_info = res['data'] super end
于是试着把super这行注释,回调回来的报错变成http500,错误日志是
NoMethodError (undefined method `[]' for nil:NilClass):不知道有没有人遇到过这样的问题
应该是父类里请求了id为sso的action,项目里没有对其进行定义,致使notfound<divclass='ref'>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。