DiscourseのCookieトークンによるログイン

コミュニティサイトとしてDiscourseを使用しており、公式ウェブサイトもあります。
そのため、ユーザーが公式ウェブサイトにログインした後、Discourseに自動的にログインされることを期待しています。
公式ウェブサイトでは、ユーザーがログインするとCookieが追加され、DiscourseではCookie共有を使用します。DiscourseはCookieで認証を取得し、ユーザー情報を取得してログインします。
コード実装は以下の通りです。

application_controller.rb
  before_action :check_cookie_login
  def check_cookie_login
    if !current_user && cookies[:authorization]
      external_id = get_external_id cookies[:authorization]
      cookie_log_on_user external_id
    end
  end
current_user.rb
 def cookie_log_on_user(external_id)
    sso_record = SingleSignOnRecord.find_by(external_id: external_id)
    user = sso_record.user
    log_on_user(user)
  end
default_current_user_provider.rb
 def log_off_user(session, cookie_jar)
    ……
   cookie_jar.delete('authorization')
 end

このように実装することに何か問題はありますか?より良い方法はありますか?

これは安全ではありません。ユーザーがブラウザのCookieを改ざんして、他の誰かとしてログインできてしまいます。

代わりにDiscourseConnectを使用してください。

「いいね!」 3

ご提案ありがとうございます。私はDiscourseの初心者です。代わりにDiscourseConnectを使用した場合、DiscourseConnectが必要とするnonceを返すWeb APIが必要になりますか?

「いいね!」 1