1

次の 2 つのサーバーがあります。

  • ドメイン A に 1 つ
  • 別のドメイン B にある別のもの。

それらをそれぞれAサーバーとBサーバーと呼びましょう。

A-server は、独自の認証とフロントエンド部分を備えたメイン サーバーです。B-server は、独自の認証を持つサービスです。

js内でサーバーAからサーバーBのユーザーを認証するにはどうすればよいですか?

トークンベースの認証を考えて、サーバー B に追加します。

これで、パスに応答し/sign.json、トークンで適切に認証できるようになりました。

ただし、トークンは http-headers に配置されます。だから、すべてが正常なはずですよね?
ただし、サーバー (js を使用するメイン A とトークンベースの認証を使用する B) のドメインが異なるため、これらのヘッダーは js では非表示になっています。

誰かがそのような種類の認証の適切な実装を指摘できますか?

また、どうすればうまくいくのでしょうか?

(現時点では、認証を 1 か所にまとめてすべてのサービス/サーバーに使用することは非常に困難です。)

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