一种针对许多其他API微服务的身份验证API

时间:2018-07-24 12:09:12

标签: .net api .net-core microservices

我的计划是在.Net Core 2.1中构建一些单独的WebApi后端应用程序。我还想拥有一个大型前端应用程序(内置于Angular中),该应用程序将使用上述微服务的调用。

因此,在Frontend应用程序中,我将具有一些模块: 登录,MicroSrv1,MicroSrv2等...

登录GUI将使用LoginApi。登录后,我想显示MicroSrv1 GUI(连接到MicroSrv1 Api),MicroSrv2(连接到MicroSrv2 Api),依此类推。

我的想法是:

  • 打开LoginGUI单击“登录”
  • 调用LoginApi在Azure AD中进行身份验证(使用JWT)并下载用户数据以及该用户的角色,然后返回LoginGUI
  • 经过身份验证后,我将转到带有MicroSrv1GUI,MicroSrv2GUI的下一个面板
  • 然后应授权对MicroSrv1 Api或MicroSrv2 Api的下一次调用(因此还要发送令牌,也许存储在cookie中)

这是一个好习惯吗?是否只有一个单独的微服务进行身份验证?还是每个微服务都应该内置自己的微服务? 如何在微服务之间共享身份验证令牌并仅使用一个Login Api应用程序?您能给我一些例子吗?

2 个答案:

答案 0 :(得分:0)

我不明白为什么每个微服务都有GUI,但是您可以通过使用共享数据保护密钥为每个微服务添加身份验证来实现。

您可以通过将数据保护配置为使用共享文件夹作为密钥存储区,或者实现自己的共享存储库来实现这一目的。

答案 1 :(得分:0)

从身份验证服务中,您将根据用户角色和与其关联的权限返回JWT令牌。

在客户端,您将解析JWT令牌,并基于权限,仅显示适用于用户的屏幕,在服务器端,您将读取每个REST调用中的访问权限,并且如果用户尝试在没有权限访问权限的情况下访问服务,则会出现未经授权的错误