Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails单点登录服务并与RESTAPI通信_Ruby On Rails_Rest_Authentication_Single Sign On_Cas - Fatal编程技术网

Ruby on rails Rails单点登录服务并与RESTAPI通信

Ruby on rails Rails单点登录服务并与RESTAPI通信,ruby-on-rails,rest,authentication,single-sign-on,cas,Ruby On Rails,Rest,Authentication,Single Sign On,Cas,在我的公司,我们正在开发几个使用RESTAPI服务器的web应用程序 首先介绍一下。 该应用程序提供了通过RESTAPI管理用户的能力,并允许用户登录到该应用程序 目前RESTAPI仅供内部使用,因为我们计划开发更多的应用程序,并与作为数据访问中心点的RESTAPI进行通信。我们正在使用内部应用程序的“资源所有者密码凭据授予”实现来处理RESTAPI身份验证 我们需要的是所有应用的单一登录服务,我们希望用户登录到一个应用,如果他/她访问我们的另一个应用,他/她将已经登录 我们一直在试验CAS协议

在我的公司,我们正在开发几个使用RESTAPI服务器的web应用程序

首先介绍一下。

该应用程序提供了通过RESTAPI管理用户的能力,并允许用户登录到该应用程序

目前RESTAPI仅供内部使用,因为我们计划开发更多的应用程序,并与作为数据访问中心点的RESTAPI进行通信。我们正在使用内部应用程序的“资源所有者密码凭据授予”实现来处理RESTAPI身份验证

我们需要的是所有应用的单一登录服务,我们希望用户登录到一个应用,如果他/她访问我们的另一个应用,他/她将已经登录

我们一直在试验CAS协议,特别是赌场库,它工作得非常好

问题是我们不知道如何处理应用程序、RESTAPI和SSO服务之间的流,而且我也不知道是否有更好的SSO服务选择

我的问题是……

  • 我们如何处理应用程序、RESTAPI和 SSO服务,因为RESTAPI应该是无状态的,所以它不应该是无状态的 是否与SSO服务通信?或者,有没有一种方法可以传达信息 SSO服务的RESTAPI

  • 是否有更好的选择来实施单一登录服务, 可能是誓言或OpenID,这个选项适合RESTAPI吗

  • 提前谢谢

  • REST API必须与SSO服务器对话以验证访问令牌,除非它所需的所有信息都在访问令牌中加密。不确定“应用程序之间的流”是什么意思,您应该让所有应用程序都与中央SSO服务器通信

    当用户希望在WebApp1上创建帐户时,应在SSO服务器上创建帐户,方法是将帐户重定向到该服务器,或者如果您需要为每个web应用程序创建不同样式的注册表单,则通过AJAX调用SSO服务器的REST API。我建议使用后者,因为重定向更难调试,而且会造成糟糕的用户体验

    确保消息清晰,即不是“注册WebApp1帐户”,而是“注册MyCompany帐户以访问WebApp1”

  • OAuth2.0非常流行,人们对它有更多的经验,因此更容易获得帮助或与他人创建的应用程序集成

    是一个很好的服务器库

    OAuth 2.0通常在SSO服务器不信任客户端应用程序(如Facebook、Twitter)时使用,但它可以通过跳过客户端授权步骤(要求用户批准客户端应用程序)的方式实现,并且您可以通过REST API使用

    CAS比OAuth容易。实现基本端点是相当容易的,这样您就可以根据需要自定义它

  • 我在基于CAS的服务器上使用自定义实现(不确定它是否真的符合CAS)。身份验证是用Deviate完成的(我不建议Deviate,如果您打算大量定制它,在这种情况下,请自行制作)。最初的流程是,用户转到网站,单击登录/注册,然后重定向到SSO服务器,用户登录后,使用一次性票证重定向回来,该票证由网站后端通过REST API调用交换到访问令牌

    然后,我们添加了一个RESTAPI,该API通过AJAX从每个网站调用。您发送用户名/密码/验证码/etc并获取一个身份验证令牌,站点将其发送到自己的后端。SSO REST API还可以在其自己的域上设置cookie,这样,如果用户访问我们的另一个web应用程序,它会在pageload上调用以检查用户是否登录。通过这种方式,您可以自动登录每个Web应用程序,而不会出现重定向混乱

    所有颁发的令牌+关联的用户信息都被发送到一个fast Node.js应用程序,该应用程序将把它们保存到Redis,应用程序后端将调用该应用程序来真正快速地验证访问令牌,而不会加载SSO Rails应用程序

  • REST API必须与SSO服务器对话以验证访问令牌,除非它所需的所有信息都在访问令牌中加密。不确定“应用程序之间的流”是什么意思,您应该让所有应用程序都与中央SSO服务器通信

    当用户希望在WebApp1上创建帐户时,应在SSO服务器上创建帐户,方法是将帐户重定向到该服务器,或者如果您需要为每个web应用程序创建不同样式的注册表单,则通过AJAX调用SSO服务器的REST API。我建议使用后者,因为重定向更难调试,而且会造成糟糕的用户体验

    确保消息清晰,即不是“注册WebApp1帐户”,而是“注册MyCompany帐户以访问WebApp1”

  • OAuth2.0非常流行,人们对它有更多的经验,因此更容易获得帮助或与他人创建的应用程序集成

    是一个很好的服务器库

    OAuth 2.0通常在SSO服务器不信任客户端应用程序(如Facebook、Twitter)时使用,但它可以通过跳过客户端授权步骤(要求用户批准客户端应用程序)的方式实现,并且您可以通过REST API使用

    CAS比OAuth容易。实现基本端点是相当容易的,这样您就可以根据需要自定义它

  • 我在基于CAS的服务器上使用自定义实现(不确定它是否真的符合CAS)。身份验证是用Deviate完成的(我不建议Deviate,如果您打算大量定制它,在这种情况下,请自行制作)。最初的流程是,用户转到网站,单击登录/注册,然后重定向到SSO服务器,在用户登录后,重定向回该网站的一次性票证