我计划在VNET中的VM中托管我的REST API,其中唯一的入口点是通过Azure API管理。
我有多个后端,所以API管理将根据用户所在的组路由到不同的后端基本url,并且后端也将根据进行调用的用户返回不同的数据。
既然Azure API Management可以处理授权、JWT验证和设置头部等,我应该在REST API应用程序中放入哪种类型的授权代码?
我应该尝试在Java代码中再次验证JWT,还是只解析报头?
也就是说,将其编码为公共API并信任API管理已正确设置标头是否安全?
或者我是否应该每次都从Spring控制器调用Azure Active Directory,以验证用户是否确实存在于指定的组中,以及指定的组是否为该后端所期望的组?
如果是这样的话,我如何在Java中做到这一点,以及当我在本地运行时,我如何注入一个离线版本?
发布于 2019-08-19 08:21:26
由于您的API将位于VNET中,因此它将按原样受到保护。但是,真的没有理由只让它打开。你可以添加的保护层越多,你抵御潜在攻击的机会就越大。
所以看看对你来说最方便的东西。您可以依靠APIM进行用户身份验证和授权,并避免在您的后端API中执行这些操作。但最好检查对后端API的调用是否来自APIM,您可以通过从APIM发送凭据来实现这一点。这里最好的选择是客户端证书:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates
但您也可以发送基本凭据:https://docs.microsoft.com/en-us/azure/api-management/api-management-authentication-policies#Basic
https://stackoverflow.com/questions/57480305
复制相似问题