[英]Angular 2 + Rails + Auth0
好的,我知道了。 如果我使用Auth0在Angular端進行身份驗證,然后向我的Rails服務器發出HTTP請求,則該HTTP請求將具有一個Authorization
標頭,其值如下所示:
承載eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JlbmZyYW5rbGlubGFicy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NTgzMDZmOTFjMDg4MTRlMDEwMTVmNDM0IiwiYXVkIjoiajNKdHpjYnNpTUkyR0JkRnZGb3FFTjM4cUtTVmI2Q0UiLCJleHAiOjE0Nzk4OTc3OTYsImlhdCI6MTQ3OTg2MTc5Nn0.2cGLY_e7jY0WL-ue4NeT39W4pdxJVSeOT5ZGd_xNmJk
“ Bearer”之后的部分(以“ eyJ0”開頭)是JSON Web令牌 。 從今以后,我將把JSON Web令牌簡稱為“令牌”。
當Rails收到HTTP請求時,它可以獲取並解碼令牌。 就我而言,我正在使用Knock 。
Knock希望我的User
模型定義from_token_payload
方法。 這是我的樣子:
class User < ApplicationRecord
def self.from_token_payload(payload)
User.find_by(auth0_id_string: payload['sub'])
end
end
我的user
表具有auth0_id_string
列。 如果我手動創建一個auth0_id_string
與我在解碼的Auth0令牌中的sub
下找到的用戶匹配的用戶,則我的from_token_payload
方法將找到該用戶,並且Knock會為我對該令牌表示贊許。 如果找不到用戶,請豎起大拇指。
因此大致如下:
有一些遺漏的地方,但這就是要點。 我可能最終會寫一篇有關Angular + Rails + Auth0身份驗證的教程,因為據我所知,目前還不存在。
根據您提供的信息,我假設您想要一個具有在Angular中實現的前端並使用基於Rails的API來為Angular前端提供所需服務的應用程序。
在這種情況下,您可以從Auth0端將此模型建模為單個(客戶端)應用程序,並執行以下操作之一:
第一個選項最容易實現,但是您必須在每個請求中都包含ID令牌。 第二個方面增加了您的復雜性,但可能會給您帶來更大的靈活性。
如果這不能解決您的所有問題,能否請您提供有關您要完成的確切方案的更多詳細信息,以更新問題。
最后要注意的是,如果您打算提供一個API,以后可以供不同范圍的應用程序使用,則最安全的方法是使用基於令牌的系統,其中令牌將由授權服務器發行符合OAuth2。
擁有自己的OAuth2授權服務器很難維護,因此Auth0正在啟用它作為一項附加服務,該服務已經可以在預覽模式下用於美國地區的帳戶。 基本上,這將允許作為身份驗證過程的一部分,獲取客戶端應用程序用來了解當前已驗證用戶的ID令牌以及允許對指定API進行調用的訪問令牌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.