【发布时间】:2021-08-05 05:57:46
【问题描述】:
我有一个非常基本的问题,因为我正在观看一些与微服务相关的教程。如果我为 1 个应用程序创建多个微服务,我是否需要为所有微服务实现身份验证和授权?例如,如果我有一个电子商务网站,并且我有多个具有特定端点的购买模型的微服务。
- 作为用户,当我登录 UI 时,最初调用 AccountManagement 微服务(它几乎没有注册/登录/重置/撤销等功能),然后从一个功能移动到另一个功能,中间调用另一个微服务(应该下一个微服务读取cookie信息并自动认证?是这样的吗?
- 我的其他微服务是否也具有帐户管理微服务的所有功能或仅通过刷新令牌进行身份验证?
我对微服务中的这个概念相当陌生,并试图通过教程尽可能多地掌握,但这些问题我仍然很难正确理解。
【问题讨论】:
-
我建议看看 OAuth 或单签名如何工作。它会回答你的问题。
-
如果您的微服务是任何人都可以访问的 URL,那么是的,它应该始终受到保护。在C#中,一旦你设置了授权,你只需要用
[Authorize]docs.microsoft.com/en-us/dotnet/architecture/microservices/…装饰你的方法你不必担心cookie等。 -
解耦你的身份验证服务,你的身份验证服务将根据一些散列算法生成访问和刷新令牌,如
HS256存储秘密以进行散列。现在在每个微服务的ConfigureServices()方法中,使用.AddJwtBearer扩展方法使用TokenValidationParameters验证访问令牌,并使用Authorize属性装饰微服务中的每个方法。
标签: c# .net api asp.net-core microservices