我有:
用户身份验证微服务具有REST API,通过它我可以管理用户(创建/删除用户,更新用户数据,获取所有用户的列表,检查用户密码等)
现在我需要执行授权/身份验证:
myApp应用程序无法直接访问用户数据库,所有通信仅通过用户身份验证微服务处理。
在过去的一周中,我一直在广泛阅读有关REST API中的授权/身份验证的信息,但是仍然不知道如何为用户-> myApp < / em>和 myApp->用户身份验证微服务。
这是我目前想出的。
注册(Diagram):
登录(Diagram):
username | password | email | address | APIKEY
---------+----------+-------+---------+-----------
steve | n8Y5e... | ... | ... | D4ED43...
sessionID: 9w72tv3MHZD...
session_data: {
"cookie": {
"originalMaxAge": ...,
"expires": ...,
"httpOnly":true,
"path": ...
},
"user": {
"authenticated": true,
"username":"steve",
"apiKey": D4ED43C0...,
"created": ...
}
}
expire: ...
根据每个后续请求(Diagram):
{ authenticated: true, username: "steve" }
之类的内容来授予访问权限退出(Diagram)(前4个步骤与上面“根据每个后续请求”中的步骤完全相同):
{ authenticated: false }
的方式对myApp进行响应问题:我做错了吗?我应该改变什么?我以前从未构建过API的身份验证,因此我将不胜感激任何建议。我想了解“大局”。
答案 0 :(得分:0)
您应该使用基于令牌的身份验证。您的流程应如下所示:
1-用户在身份验证微服务中注册。
2-用户将用户名和密码发送到身份验证微服务并接收承载令牌。
3-用户将收到的承载令牌发送到每个端点(api),并且每个微服务都应使用该令牌对用户进行身份验证。
您还可以仅在ApiGateway中配置身份验证。通过这种方法,当用户从身份验证微服务接收到承载令牌时,他将呼叫您的ApiGateway以访问特定资源,并且ApiGateway对用户进行身份验证并将请求路由到适当的微服务。请注意,在这种方法中,除ApiGateway之外的微服务不应具有公共地址。