1

有两个服务器:

  • 一个在域 A
  • 另一个在不同的域 B.

我们分别称它们为 A-server 和 B-server。

A-server 是具有自己的身份验证的主服务器,也是前端部分。B-server 是一个有自己认证的服务。

如何在 js 中从服务器 A 对服务器 B 上的用户进行身份验证?

我考虑基于令牌的身份验证并将其添加到服务器 B。

现在它可以响应/sign.json路径并使用令牌进行身份验证。

但是令牌放在 http-headers 中。所以,一切都应该是正常的,对吧?
但是这些标头对于 js 是隐藏的,因为服务器(带有 js 的主 A 和带有基于令牌的身份验证的 B)具有不同的域。

有人可以指出这种身份验证的适当实施吗?

还有,应该怎么做好?

(目前很难将身份验证放在一个地方并将其用于所有服务/服务器。)

这是关于 http 和令牌的一般问题,但我有具体的实现:

B - Rails 4.2
gem 'devise_auth_token'
gem 'rack-cors'

//setup for rack-cors:
//in middlewares.rb
  config.middleware.insert_before 0, "Rack::Cors" do
    allow do
      origins ENV['CONFIG_ACTION_DISPATCH_DEFAULT_HEADERS_CONTROL_ALLOW_ORIGIN'] || '*'
      resource '*', headers: :any, 
      methods: [:get, :post, :options, :put, :patch, :delete],
      expose: ['access-token', 'expiry', 'token-type', 'uid', 'client']
    end
  end

正如您从设置中看到的,我从基于令牌的身份验证中添加了 Expose-Headers。

4

0 回答 0