当前位置: 首页 > 知识库问答 >
问题:

从Azure python sdk JWK生成jwCrypto JWK

景宏朗
2023-03-14

我正在使用azure sdk从azure密钥库获取密钥。这将返回一个KeyBundle,它的key属性类型为azure。钥匙库。v7_0。模型。json_web_key_py3。JsonWebKey

对于我的代码的不同部分,我需要从jwCrypto JWK制作一个签名令牌。make_signed_token方法使用JsonWebKey。从Azure返回的JsonWebKey(我认为)实际上是同一个类,在不同的包中定义。

有没有办法将Azure JWK变成jwcrypto JWK?我认为可以一个接一个地转换所有属性,但我想知道是否有更优雅的方法。

编辑:忘记包含版本...

  • Windows 10

共有1个答案

松景铄
2023-03-14

将Azure JWK对象转换为jwcryptoJWK对象的简单方法如下所示。

import jwcrypto.jwk as jwk

azureJwkObj = .... # your Azure JWK object
azureJwkDict = azureJwkObj.__dict__

jwcryptoJwkObject = jwk.JWK(**azureJwkDict)

下面也一样。

jwcryptoJwkObject = jwk.JWK().import_key(**azureJwkDict)

我认为有一个函数 import_keyjwcrypto.jwk.JWK需要一个 判决作为参数来生成一个 jwCryptoJWK对象后,我审查了Azure KeyVault SDK的源代码和 jwCrypto的Python。

根据Azure KeyVault SDK的源代码 json_web_key_py3.pyjwcryptojwk.py,我试图通过下面的代码。

 
  from jwcrypto import jwk
key = jwk.JWK.generate(kty='oct', size=256)
print(key.__dict__)
# The output is {'_params': {'kty': 'oct'}, '_key': {'k': 'HJUk1CeudZ2Tur0fzHnOi-1U9UjxaUjClRW8TvqFakI'}, '_unknown': {}}

 

然后,我尝试使用下面的代码将Azure JWK对象转换为JWK所需的jwcrypto.jwk.字典。import_key通过 import_key函数创建 jwCryptoJWK对象。

 
  import jwcrypto.jwk as jwk

azureJwkObj = .... # your Azure JWK object
azureJwkDict = azureJwkObj.__dict__

_params = {k: v for k, v in azureJwkDict.items() if k in jwk.JWKParamsRegistry.keys()}
kty = _params.get('kty', None)
_key = {k: v for k, v in azureJwkDict.items() if k in jwk.JWKValuesRegistry[kty].keys()}

args = {'_params': _params, '_key': _key, '_unknown': {}}

jwcryptoJwkObject = jwk.JWK.import_key(args)

 

 类似资料:
  • 虽然使用GraphiQL效果很好,但我的老板要求我实现一个用户界面,用户可以通过诸如checkbox、map relationships之类的UI元素检查呈现给他们的元素,并获取数据,这样做将为用户生成GraphiQL输入,调用API并将结果返回给用户。 所以,基本上这涉及到两代人。从GraphQL模式生成用户界面,并从用户的选择生成GraphQL输入查询。 我搜索了一下,但没有找到任何工具已经做

  • 问题内容: 是否有可能从byte []生成java.security.cert.X509Certificate? 问题答案: 当然。 证书对象可以由CertificateFactory的一个实例创建- 尤其是配置为创建X509证书的一个实例。可以这样创建: 然后,您需要向其传递一个包含证书字节的InputStream。这可以通过将字节数组包装在ByteArrayInputStream中来实现:

  • 问题内容: 我正在尝试在给定私钥和已知曲线的情况下生成公钥。下面是我的代码: 但是,当我打电话给 我时:我得到了例外:(不是我的拼写错误) 我似乎在计算错误,但是我不确定错误在哪里。 谢谢您的帮助! 问题答案: 如果我未来的自己需要解决方案:

  • 嗨,我试图从动画视图生成gif 简而言之,我在FrameLayout中有了ImageView和动画视图,现在我想生成主FrameLayout的gif,最低sdk级别19。getDrawingCache位图并将它们按顺序排列成gif可能会导致内存越界问题。 当我点击“开始录制”时,我想要特定视图的gif或视频。

  • 问题内容: 我有的: 我正在从pojo生成JSON模式。我的生成架构的代码如下所示: 我通过上面的代码生成了几个模式。其中一个pojos具有内部嵌入式枚举,以限制可能的值,如下所示: 上面的代码应将传递给“星期一”,“星期二”,“星期三”等的JSON数据中可能的String值限制。 当我在有问题的代码上运行模式生成器时,我希望得到类似以下模式的内容: 但是相反,我得到这个: 我在Jackson模式

  • 问题内容: 我想要一个从JSON生成Java源文件的实用程序。例如我们有 我们将此传递给实用程序,并希望它生成如下内容: 编写起来并不难,但是我敢肯定有人已经做到了。 问题答案: 尝试: http://www.jsonschema2pojo.org Orsol,我确定你在这里还没有等待解决方案,但是为了下一个找到此线程的人,我想我会添加一些更多信息。 自从09年12月问这个问题以来发生了两件事:

  • 问题内容: 我从这样的网络应用程序中生成了一个可以长时间运行的脚本: 脚本成功生成并运行,但是直到结束为止,我无法释放该Web应用程序使用的端口,换句话说,我无法重新启动该Web应用程序。我如何产生一个流程并使它完全独立于Web应用程序? 这是在Linux操作系统上。 问题答案: 正如@mark所阐明的那样,它是一个Linux系统,通过遵循此食谱,脚本可以轻松地使其自身完全独立,即 守护程序 。(