Rails [请教] Rails 统一登录认证

hz_qiuyuanxin · 2012年09月22日 · 最后由 lgn21st 回复于 2015年12月22日 · 6549 次阅读

现在有一个需求,我们给企业做了两个系统,企业希望一次登录,就可以进入两个系统。

即需要一个类似门户的东西,我在网上看了下,称为统一登录认证

请问 Rails 有没有关于这方面的插件或者啥的?

哪位大侠能给点建议

Thanks !

单点登录(SSO)http://baike.baidu.com/view/993620.htm 你自己研究一下

实现一个 OAuth2Authorisation Server,然后其他系统走 OAuth2 的认证登陆流程即可。

#1 楼 @kevin__liu 已经找到一个 gem 了,rubycas-server

#3 楼 @hz_qiuyuanxin 不错。 其实你的需求自己实现也行的,不算难。但要把 SSO 的概念和原理先搞清楚。

赞同 @lgn21st #3 楼 @hz_qiuyuanxin 你可以借鉴 songkick/oauth2-provider 实现一个 Oauth2 认证服务器。 https://github.com/songkick/oauth2-provider

如果不需要同时 logout 的话 OAuth 会比 rubycas 好点,同时也有更多的 Gem 可以选择

#2 楼 @lgn21st 根据你的建议已经完成了这个过程(用 devise 、oauth、 oauth2、 omniauth 写了两个系统 A 和 B,B 没用 devise),请问 B 系统的用户注册是不是直接链到 A 系统的注册地址(带一个 redirect_url),注册完再返回这个 redirect_url;在 B 系统中用户注册和修改密码模块上方便指个方向吗?谢谢!

#7 楼 @hytohigh 我看了一下我的回复,是在 3 年前,难道说...... 用三年完成了这个过程? 😂

很久没有搞 OAuth 了,细节方面大概是 B 用从 A 获取的 API key 发起向 A 的授权申请,然后引导用户到 A 完成注册或者登录,然后用户返回 Access Token,然后 B 在后台用这个 Access Token 到 A 处取得用户的信息,在 B 处完成注册登录。

#8 楼 @lgn21st 我和楼主不是一个人,昨天到 ruby-china 搜索相关 sso, 看到了你的回复,就做了,两个系统的用户表要注意什么吗?这是三年前的回复,难道现在 rails 的 sso 不用这种方式了 ?昨天看到有 rubycas-server ,rubycas-client(好像不支持 rails4 啊);casino 和你的这个方案。现在 rails 的 sso 用哪种比较好?

#8 楼 @lgn21st 我非常想删了这个 topic,但是我找不到删除按钮 😢

#9 楼 @hytohigh 没有什么太大的变化,基于 OAuth 的 SSO 技术早在三年前就已经非常成熟了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册