我正在设置一项服务,该服务需要针对现有的Gitlab作为OAuth Provider进行授权。
该服务是SPA,在开发模式下由webpack开发服务器提供服务,而在生产模式下则由Nginx服务器提供服务。
我还设置了一个外部API,该API应该处理数据库并向给定的gitlab实例发出请求(例如pull repos)。
我的SPA正在使用hidden_grant流针对Gitlab OAuth进行授权,并且正在获取访问令牌。目前,我将重定向到我的API后端后传递了access_token,在那里我通过对具有access_token的gitlab实例的请求获得了Gitlab用户ID和用户名。有了这些,我生成了一个jwt并将其发送到客户端(SPA)并将其保存在那里,因此我可以使用此JWT授权我的API。
我将如何处理后端的初始access_token(因为我需要令牌才能进行gitlab调用)?
目前,我正在考虑将其写入数据库中的用户,并在每次用户提出请求时都获得用户(正常的护照流程),因此我也有令牌。但是,如果令牌无效或过期怎么办?
我应该在后端使用拦截器,如果令牌无效(gitlab会给我一个401),将401重定向到我的客户端,让他获取一个新令牌,并将其传递回后端,生成一个新的JWT,发送该令牌再次向客户发送请求,让他执行与原始请求相同的请求(也通过拦截器)?
还是我应该将401重定向到我的客户端,让他获得一个新令牌,让他将该令牌发布到例如/ renewToken并将令牌保存到数据库并使用旧的JWT?
希望有人可以帮助我理解这一流程。
答案 0 :(得分:0)
Credential Management API应该是您在客户端上要寻找的。这将检索id和访问令牌,以便您可以将访问令牌与服务器/ ap进行比较,然后验证id令牌。
还没有看到Git示例,但是有Google和Facebook示例。