次の 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 を追加します。