Authentication golang中的单点登录身份验证
我正在尝试在Authentication golang中的单点登录身份验证,authentication,go,oauth,oauth-2.0,openid-connect,Authentication,Go,Oauth,Oauth 2.0,Openid Connect,我正在尝试在golang中构建一个多租户体系结构,其中将有不同的服务,如Service-a和Service-B每个服务将在不同的服务器上运行,我希望用户有一个单一登录解决方案,并在提供的所有服务中获得身份验证 正如亚马逊AWS或谷歌所喜欢的,它有许多不同的服务,如亚马逊云前端,亚马逊EC2,亚马逊S3,所有服务都通过一次登录进行身份验证,从一个服务注销会导致从所有连接的服务注销 我试图在golang中实现这一点,到目前为止,我发现openid-Connect 但它缺乏解释其API和体系结构的文档
golang
中构建一个多租户体系结构,其中将有不同的服务,如Service-a
和Service-B
每个服务将在不同的服务器上运行,我希望用户有一个单一登录
解决方案,并在提供的所有服务中获得身份验证
正如亚马逊AWS或谷歌
所喜欢的,它有许多不同的服务,如亚马逊云前端
,亚马逊EC2
,亚马逊S3
,所有服务都通过一次登录进行身份验证,从一个服务注销会导致从所有连接的服务注销
我试图在golang
中实现这一点,到目前为止,我发现openid-Connect
但它缺乏解释其API和体系结构的文档
设计此类认证系统的最佳架构是什么?
我认为使用JWT令牌可以实现它此体系结构是否安全,或者是否有更好的解决方案
我的方法
而你的解决方案肯定会奏效。这可能会使编写应用程序的浏览器/移动设备/通用前端部分变得更加复杂。而且可能更慢
例如,您可能最终会在前端有效地连接数据。您向服务A发出一个请求,然后使用返回的信息向服务B发出其他请求。这对用户来说是一种糟糕的体验
像Netflix和Soundcloud这样的公司开创性的一个新概念是。它是每种类型前端设备的服务器端适配器,可以处理身份验证并聚合到下游服务的连接 这个问题很重要。可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息以缩小答案集或隔离可以在几段中回答的问题。@jurgemaister我正在编辑并添加详细信息,这将使您很容易回答。@jurgemaister我编辑过,请现在检查它。只有我可以说,您的方法应该有效。更好是一个主观术语。还有很多其他的选择,正如@jiangd所说,对于如此广泛的问题,我们唯一能说的是,“作为一个选择,你的方法应该有效”
-----------------
| | shared
| | env file
|SERVICES A |---------------|
AUTH HEADER | | |
JWT TOKEN | | |
|---------------> ----------------- |
--------- ------------------ shared |
| | | SERVICE B | env file |
|Login | -----------| |----------- |
|Browser| | | | |
--------- ------------------ | |
| | | |
Login| |"JWT_TOKEN RESPONSE" | |
| | | |
-------------- enviroment file ------------
| |----------------------------------| |
| Main Server| | |
| | |JWT_SECRET|
-------------- |="secret" |
------------