[英]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.