当前位置: 首页 > 知识库问答 >
问题:

使用rails后端将SAML集成到Angular JS

楚良平
2023-03-14

我正在处理的当前场景要求我在具有rails后端的角度应用程序中集成SAML或单点登录。首先,我能够向我的IdP发送一个请求,并收到一个XML形式的响应,我使用nokogiri进行解析,并且我有一些凭据,可以在数据库中创建用户。但问题是,我无法在用户创建后登录并保持他们的登录状态。

我在前端实现了ng token auth,在后端设计了\u token\u auth。我已经使用omniauth saml gem向IdP发送了一个请求,IdP用post请求进行响应,我有一个单独的控制器继承::designetokenauth::OmniAuthCallbackController,并拥有post路由,在那里我使用IdP的响应。

一旦我这样做了,并且在数据库中创建了用户,我就不知道如何让用户登录。我执行以下操作,可以看到后端的登录计数在增加,但在客户端,用户保持注销状态。

@resource = User.find_or_create_user(idp_response)
if @resource.persisted?
  set_token_on_resource
  create_auth_params
  sign_in(:user, @resource, store: false, bypass: false)
  yield @resource if block_given?
  render_data_or_redirect('deliverCredentials', @auth_params.as_json, @resource.as_json)

看来我已经陷入了死胡同一段时间了。我不知道如何在前端手动验证用户身份,作为我的IdP的响应。任何帮助都将不胜感激。

共有1个答案

吉玉宸
2023-03-14

在您的控制器中,登录请求被命中。。

response = SIGN_IN_REQUEST_API
session[:api_tokens] = response.headers

在应用程序布局中。html。haml,

- if (tokens = session[:api_tokens]).present?
  :javascript
    myApp.controller('cookieController', function($scope, $resource, $http, $mdDialog, $auth, ipCookie ) {
      ipCookie('auth_headers', '{"access-token": "{token["access-token"]}","token-type": "Bearer","client": "#{token["client"]}","expiry": "#{token["expiry"]}","uid": "#{token["uid"]}"}", {path: "/",expires: 9999,expirationUnit: "days",secure: false}');
      ipCookie('currentConfigName', 'default', {path: '/',expires: 9999,expirationUnit: 'days',secure: false});
    });
  - session.delete(:api_tokens)
  %div{'ng-controller'=>'cookieController'}

参考

 类似资料:
  • 我需要将angular前端与spring boot后端(REST API)与SAML 2.0集成,我的身份提供者是KeyClope。 我已经使用SAML2 js库与前端集成,现在我如何使用成功登录前端后收到的saml断言来保护后端spring rest API。我能在前面看到的是nameID和session index。如果有人使用SAML集成来保护spring后端rest API,请告诉我有关这

  • 我正在使用SAML 2.0将我们的应用程序与客户的身份管理系统集成。以下是要求 我们的应用程序的登录屏幕将有一个单一登录选项。单击后,用户将被引导到身份管理系统的登录屏幕 现在,客户要求我们为他们提供SAML元数据文件。我们的应用程序是在dot-net中开发的。 我查看了可用于SAML生成的组件空间和ATC Inc组件,但我需要帮助才能开始这项工作。 有人能帮我吗?这是我没有做过的新东西。 谢谢A

  • 如果你想使用传统的后端(如 Rails, Laravel)来服务 HTML,但使用 Vite 来服务其他资源,可以查看在 Awesome Vite 上的已有的后端集成列表。 或者你可以按照如下步骤手动配置: 在你的 Vite 配置中配置入口文件和启用创建 manifest: // vite.config.js export default { build: { // 在 outDir

  • 我正在开发一个与多个Idp集成的spring boot应用程序。我在互联网上查看了许多将spring应用程序与SAML集成的示例,所有这些示例都展示了如何通过应用程序属性与Idp集成。 在OAuth 2.0的情况下,我们有MSAL库提供的客户端,我们集成如下。 在Spring boot中有没有类似的方法,让客户端调用ADFS SAMLIDP并对用户进行身份验证? 根据请求,从数据库中获取IDP详细

  • 我试图让HoK配置文件与Spring SAML作为SP和SimpleSAMLphp作为IdP一起工作。 SP获取客户端证书,然后向IdP发送以下身份验证请求,无问题: 作为响应,IdP在TLS握手期间请求客户端证书,然后获取他的用户名/密码并成功验证他。它发送以下响应: 看起来一切正常,但是Spring SAML抛出了以下异常: Spring SAML调试日志在此处: 错误为:HoK Subjec

  • 如果你正在建设一个纯静态的应用程序(与后端api分离部署),那么你可能甚至不需要编辑config/index.js。但是,如果你想要这个模板与现有的后端框架集成,例如Rails/Django/Laravel,拥有自己的项目结构,您可以编辑config/index.js,直接生成前端资源注入到你的后台项目。 让我们看一下默认的config/index.js: var path = require('