Tag: 密码学

在.NET Core中跨Docker容器存储RSA密钥

我有一个在Ubuntu上运行Docker的ASP.NET Core web应用程序。 它使用RSA密钥进行各种身份validation任务。 我的Web应用程序由2个容器,一个授权服务器(使用密钥来创build&签名JWT令牌)和一个资源服务器(使用密钥来validationJWT令牌)组成。 我尝试使用.NET密钥容器来创build和存储RSA密钥对。 据我所知,密钥容器使用用户/机器级别authentication来存储和检索密钥。 如果我的授权和资源服务器运行在不同的容器中,他们可能无法访问密钥。 我甚至不确定这是Windows特有的特性,还是可以在Linux上运行。 是否有一个替代scheme与跨容器的docker工作? 也许在Linux上还支持.NET Core的东西?

不同的服务器使用相同的参数生成不同的JWT令牌

我正在使用python-jose的JWT实现来生成用于身份validation目的的JWT令牌。 我们在Kubernetes的Docker容器中运行我们的后端, 有时,当我们有多个Pod时,我们为相同的声明,秘密和algorithm获得不同的令牌 。 在touch我的index.wsgi脚本时,我的开发环境中也发生过这种情况。 豆荚1: >>> jwt.encode({'key': 'value'}, 'secret', algorithm='HS256') 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ2YWx1ZSJ9.FG-8UppwHaFp1LgRYQQeS6EDQF7_6-bMFegNucHjmWg' Pod 2: >>> jwt.encode({'key': 'value'}, 'secret', algorithm='HS256') 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJrZXkiOiJ2YWx1ZSJ9.JPIDicqvQ6GAh14yE2yZ3wnZQ0LiLNTTRDtJgLZcn98' 我深入了解代码,看看可能是什么原因造成的,并没有发现任何有罪的事情。 简而言之,代码如下: 做一个json.dumps的algorithm头( {'typ': 'JWT', 'alg': 'HS256'} ),并将其编码为Base64,删除任何= 's 做一个有效载荷的json.dumps ( {'key': 'value'} )并将其编码为Base64,删除任何=的 使用HMAC256与密钥签署encoded_header.encoded_payload ,并将其编码为Base64,再次移除任何= 's 将签名连接到前一个string,导致encoded_header.encoded_payload.encoded_signature 在这一点上,我不知道是什么原因造成的。 我怀疑Python的HMAC或SHA256实现中的某种错误,但这似乎不太可能…任何线索? 注意:我们已经成功地复制了pyjwt ,这是python-jose的基础。