2012-01-09 26 views
4

我有两个应用程序 - 一个是基于Rails构建的Ruby(v1.9.2),另一个基于ASP.Net构建的简单报告应用程序结束一些Reporting Services报告。我想要做的是提供从Rails应用程序到ASP.Net Web应用程序的单一登录类型的功能。有没有办法做到这一点?从ASP.Net Web应用程序中的Rails应用程序中消费用户/认证信息

注意:我总是可以通过请求使用查询字符串或一些这样的机制将用户信息传递给ASP.Net Web应用程序,但是这感觉有点肮脏。

回答

1

我假设你的问题涉及'最终用户'的经验。在这种情况下,您应该使用OAuth。基本上你需要支持以下工作流程:

  • 用户将访问.net报告应用程序。
  • 它会重定向用户Rails应用程序,其中用户将被要求访问权限授予“他”的数据
  • 用户,在接受,将被重定向回.net应用程序,用ouath令牌

此处Rails应用程序将作为OAuth提供程序服务器,而作为OAuth客户端的网络应用程序将作为服务器提供。

这听起来是矫枉过正,但这种方法有许多优点:

  • 您可以控制哪些应用可以访问用户数据
  • 明确使用行业标准的OAuth的角色和身份验证
  • 的分离将允许其他人使用你的服务
  • 有很多OAuth库,这将有助于其他语言
0

一个简单的解决办法是对同一个域中的两个应用程序,但在不同的子域,例如:

  • reporting.mydomain.com
  • login.mydomain.com

然后有一个共享的cookie(将Cookie域设置为.mydomain.com)。

然后,您的ASP.NET应用程序可以检查您的Rails登录应用程序(通过webservice/REST API)以从会话ID获取用户名和登录状态。

虽然我也认为OAuth是一个伟大的路要走,这将工作:)

相关问题