簡體   English   中英

可以使用會話cookie保護Rails API

[英]Is possible to secure a Rails API using session cookie

我有一個問題。 我有兩個Rails網站,站點A和站點B。站點A是一個新聞網站,具有設備作為身份驗證系統,並使用帶有單點登錄的Disqus評論內容。

站點B是另一個新聞網站,沒有任何用戶身份驗證系統,並且使用Disqus對其內容進行注釋,但未進行單點登錄。

我想允許站點A的用戶訪問站點B上的Disqus上的SSO。Disqus SSO使用此腳本

def get_disqus_sso(user)
    # create a JSON packet of our data attributes
    data =  {
      'id' => user['id'],
      'username' => user['username'],
      'email' => user['email']
      #'avatar' => user['avatar'],
      #'url' => user['url']
    }.to_json

    # encode the data to base64
    message  = Base64.encode64(data).gsub("\n", "")
    # generate a timestamp for signing the message
    timestamp = Time.now.to_i
    # generate our hmac signature
    sig = OpenSSL::HMAC.hexdigest('sha1', DISQUS_SECRET_KEY, '%s %s' % [message, timestamp])

    # return a script tag to insert the sso message
    return "<script type=\"text/javascript\">
        var disqus_config = function() {
            this.page.remote_auth_s3 = \"#{message} #{sig} #{timestamp}\";
            this.page.api_key = \"#{DISQUS_PUBLIC_KEY}\";
        }
    </script>"
end

當然,網站BI上沒有任何用戶,請購買我想在網站A上創建一個私有API,該API返回登錄用戶"#{message} #{sig} #{timestamp}\\"

成功通過身份驗證后,是否可以使用Devise創建的會話cookie作為auth方法來創建返回某些內容的API?

我認為使用jwt是可能的。 流程如下。 (僅在子域中進行了測試)

user uses siteA(stores generated jwt token in a cookie) --> siteB uses the jwt token in cookie --> sends token to siteA for user data --> gets user data.

jwt認證示例

注意 :僅適用於子域,並且不要忘記對cookie進行簽名以防止篡改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM