如何实施身份验证&微服务与amp; amp;授权使用Laravel的API网关
我正在尝试实施身份验证&在我的微服务和API网关之间授权用户。我现在拥有的:
- 可以向任何微服务请求的API网关。
- 用户微服务 - 我存储所有用户的位置。
Laravel/Passport
实现了以在此微服务中对用户进行身份验证。登录路线返回的工作原理,我使用的是 微服务的用户来验证用户。 - 其他5个微服务,没有任何身份验证或授权。
问题是:使用身份验证的正确方法是什么用微服务授权?我知道我应该在 API网关中对用户进行身份验证,并且授权将在微服务中进行。但是,如果其他微服务对用户一无所知,他们会发生授权吗? 我打算以某种方式使用 jwt 代币以及有关用户角色的信息,但尚未找到如何将这些信息放入令牌
I'm trying to implement authentication & authorization of users between my microservices and API Gateway.What I have now:
- API Gateway which can request to any microservice.
- User microservice - where I'm storing all users.
laravel/passport
implemented to authenticate user in this microservice. Works as it should be, login route returns token which I'm using to authenticate user in this microservice. - Other 5 microservices without any authentication or authorization.
Question is: what is the right way to use authentication & authorization with microservices? I know that I should authenticate users in my API Gateway and authorization will happen inside microservices. But how authorization in other microservices happening if they don't know anything about users?
I'm planning to use somehow JWT token with information about user roles but haven't found yet how to put that information into token
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将尝试用
api
的基本示例来解释。假设您当前有3个
microservices
:我假设您正在使用
httponly
cookie来存储用户令牌。在核心
microservice
中,我有此路由结构:现在我想登录,我应该发送
api
请求,我应该考虑一个解决方案来发送token
token < /代码>我需要它。
因此除了获得结果外,我还应该为用户创建服务,在这里如何完成了:
如果您想知道,此
uservice
来自哪里在您的微服务等中使用并使用它。关于
apiservice
,一切都很明显,但我会尝试解释基础。api
调用时,我们都可以在此类中调用允许的方法
,然后我们的方法将调用请求,以传递常见参数,并最终使用这些进行api
调用的参数。getRequest
方法,正在执行呼叫,并从httponly
cookie获取存储的令牌,并将其作为授权>授权
标题发送到目标端点,最终,它将返回目标。因此,如果我们想使用此操作,我们可以简单地在控制器中这样做:
现在,用户微服务呢?好吧,这里的一切都很清楚,它应该像基本的应用程序一样工作。
这是路线:
在控制器中:
因此,这是一个完整的示例,您可以在其他微服务上使用Core
microService
方法,以获取与已验证的用户有关的信息,并且您可以看到所有内容都将得到认证从core> core
到其他微服务。I'll try to explain with a basic example for
API
.Let's say you have currently 3
microservices
:I assume you're using
httpOnly
cookie to store user token.In Core
microservice
I have this route structure:Now i want to login which i should send an
API
request, and I should think of a solution to sendtoken
anytime I need it.So in addition to get a result, I should create a service for user, and here how I've done it :
If you're wondering where, this
UserService
come from, then I should say, I've created a package to use it in other microservices, so you can do the same or just create a service and use it in your microservices or etc.Everything is obvious about
ApiService
, but I'll try to explain the base.API
call, we can simply callAllowed methods
in this class, then our methods, will call request, to pass common arguments, and eventually using those arguments to do theAPI
call.getRequest
method, is doing the call and get the stored token fromhttpOnly
cookie, and will send it as anAuthorization
header to the target endpoint, and eventually it'll return whatever it get from target.So If we want to use this, we can simply do like this in our controller :
Now, how about user microservice? well Everything is clear here, and it should work like a basic app.
Here's the routes :
And in controller :
So here's the complete example and you can use the Core
microservice
approach on other microservices to get your information related to authenticated user, and as you can see everything will be authenticated due to thoserequests
fromcore
to other microservices.