Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 管理内部多API集中身份验证/授权的最佳方法?_Security_Design Patterns_Oauth 2.0_Microservices_Single Page Application - Fatal编程技术网

Security 管理内部多API集中身份验证/授权的最佳方法?

Security 管理内部多API集中身份验证/授权的最佳方法?,security,design-patterns,oauth-2.0,microservices,single-page-application,Security,Design Patterns,Oauth 2.0,Microservices,Single Page Application,我试图为不同的目的创建多个API,我指的是微服务模式。我在考虑2 API,但在未来,它将增加 我发现Oauth被推荐用于这种微服务模式。但这是我自己的API,可能是我设计过度了 (下图是一个示例)我正在考虑创建我的API,将身份验证/授权内容集中在另一个API中,然后从我的API访问它(思考CORS策略) 如果我在SPA 1中,并且我想要传递到SPA 2,我可能会检测到一个cookie来询问用户信息,向电子邮件发送验证码并自动登录。(最后一部分可以使用同一个域cookie来完成,或者可能是1 S

我试图为不同的目的创建多个API,我指的是微服务模式。我在考虑2 API,但在未来,它将增加

我发现Oauth被推荐用于这种微服务模式。但这是我自己的API,可能是我设计过度了

(下图是一个示例)我正在考虑创建我的API,将身份验证/授权内容集中在另一个API中,然后从我的API访问它(思考CORS策略)

如果我在SPA 1中,并且我想要传递到SPA 2,我可能会检测到一个cookie来询问用户信息,向电子邮件发送验证码并自动登录。(最后一部分可以使用同一个域cookie来完成,或者可能是1 SPA从两个API获取数据)

我避免OAuth和API网关授权,因为我需要制作自己的服务器,而且可能会很昂贵

这是个好办法吗


编辑1:“用户”是一个API,我将在其中管理所有用户配置文件、权限、角色等,以访问其他API。

您可以在场景中使用JSON Web令牌(JWT)。您可以为每个资源/API创建JWT并交换它们

警告:JWT有一个弱点,重新使用被盗的JWT可能是一个糟糕的情况。您必须将JWT与另一个验证、cookie和SSL结合使用,并在短时间内保持JWT验证


在某种程度上,您拥有中央授权服务是正确的。但是写你自己的可能不是一个好主意。您是否考虑过auth0、Okta、Azure AD等服务?什么是用户?该图不清楚,您希望实现什么?@KapishM Users是一个API,我将在其中管理所有用户的配置文件、权限、角色等,并将其添加到其他API中access@ImranArshad是的,我考虑过,但是你有开源的替代方案吗?我知道Auth0或Okta可能会很昂贵,请检查Auth0中的免费层。实现自己的身份验证层可能不是一个好主意。您需要实现开放id连接协议(OIDC),除非您了解这方面的详细信息,否则将非常困难。