Rails OAuth2 的 redirect_url 只能有一个带来的问题和解决

匿名 · 2012年06月19日 · 最后由 gyg22 回复于 2013年04月07日 · 10726 次阅读

场景是: weibo 有个 app, 需要在两个子域名 oauth2, 比如 a.example.com 和 b.example.com, 但是 app 的 redirect_url 只能设置一个,比如设置为 a.example.com/auth/weibo/callback 这样的话,b.example.com 就不能去 oauth2 验证

想到的解决方法:

  1. 统一在一个域名 oauth2 验证,比 oauth.example.com, 验证好之后,返回子域名,带上需要的数据,比如 token 之类的,这样做问题就是相对麻烦一点
  2. 在 weibo 注册两个 app, app_a 和 app_b, 不同的子域名用不同的 app 来 oauth2 验证,这样有个问题是,不同子域名进入 weibo 验证页,显示的 app 会不一样,也需要多管理一个 app, 以后子域名增加更多的话,app 就更多了

我现在采用的是第一种方法,不知道大家有没有遇到过这种问题,觉得那种方式好一点,大家讨论下

验证 a,然后 a 的验证部分数据库和 b 共享,我是菜鸟,我猜的

匿名 #2 2012年06月19日

#1 楼 @jyz19880823 对的,数据库是一起的,但是 b 怎么知道 a 是由哪个用户验证的,这个就是我说的由 a 跳转到 b 的时候带上 token

用 example.com 这个 main site 做 oauth,sub domain 的 a 和 b 是可以和 main stie 共用同一个 cookie 的

匿名 #4 2012年06月19日

#3 楼 @quakewang 这个需求还和 sso 不大一样,只是想不同 subdomain 用同一个 app 来登录,不同 sundomain 之间不能共享登录信息

我知道好像有个东西叫 CAS,具体没实践过。

匿名 #6 2012年06月20日

weibo 的 oauth 没用过,用过 facebook, twitter, google, linkedin 之类的。有些 oauth 服务允许你在请求的数据中包含 redirect_url, 无需提前指定,只要 url 属于你指定的域名就没问题。当然有的服务只能提前在后台配置好 url. 有的服务后台明确写出:可以在请求中指定 url, 如果请求中指定了。忽略提前配置的。

你看看 weibo 是否支持请求中动态指定 redirect_url? 如果支持的话,问题迎刃而解。

匿名 #7 2012年06月20日

#6 楼 @tylerlong 谢谢提醒,仔细看了 weibo app 的设置,weibo 可以绑定域名,然后域名 (包括子域名) 的所有 url 都可以指定为回调 url

#2 楼 @yggg token 代表外部网站的一名用户贝,不论哪个 app 用这个 token, :)

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