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

如何为画布创建jwk密钥?

拓拔欣嘉
2023-03-14

在画布中,为了让LTI应用程序进行身份验证,站点管理员必须输入远程站点的JWK。JWK的格式定义明确:

{
"kty":"RSA",
"kid":"...",
"use":"sig",
"alg":"RS256",
"n":"u6gqiV...",
"e":"AQAB"
} 

首先,我们可以使用像openssl这样的工具,创建一个密钥,并从中生成JWK吗?目前,我们正在使用jose4j编写代码来实现这一点,但还不清楚这是否必要。

其次,Canvas需要一些可选字段,如kid、alg和use。我们猜测use应该是“sig”,我们编造了kid:“1”,猜测alg:“RS256”

是否有一个可以访问的地方(即不在IMSGlobal的付费墙后面)来定义这应该是什么?它是标准的还是特定于画布的?

共有2个答案

宣望
2023-03-14

JWKs是一种在工具和平台之间交换公钥的方法,允许各方控制其密钥的旋转。JWKs的格式是托管ietf标准。

LTI 1.3基于OIDC第三方启动流,而OIDC第三方启动流又基于OAuth2的ontop。但是,将您的应用程序与LTI 1.3集成不需要具备这些规范的完整工作知识。IMS在github上管理一组代码示例,这些示例可能会帮助您入门。

冉伯寅
2023-03-14

我们又见面了,几个月来一直在讨论LTI规范,我很想看看我是否能让其他人不那么头疼。

您可能熟悉验证模式,其中您使用SSL工具同时生成公钥和私钥,相互纠缠。公钥用于对有效负载进行签名,由于有效负载本身是创建签名的一个因素,因此不能在不使其无效的情况下拦截和恶意更改它。接收者获得公钥,用于验证有效负载是否干净。

JWK与公钥的用途相同。唯一的区别是,开发人员不需要提前将其通过电子邮件发送给收件人应用程序的IT团队。JWT有效负载的接收者可以按需检索它,它只需要知道要询问什么URI。这意味着密钥实际上可以由发送者替换,而不会破坏任何功能。

正如我在其他地方提到的,用一种更适合这个问题的咆哮:

此安全步骤类似于从您的银行收到一封电子邮件,您无需单击其中的潜在垃圾邮件链接,而是直接致电您的银行以确保电子邮件处于正常状态。

现在发送者的JWKSendpoint并不真正提前知道谁会联系到它,并且可能想要为多个其他实体提供服务,因此它实际上可能提供一系列公钥来覆盖所有基础。接收者当然只关心与它刚刚收到的有效负载相关联的一个,因此在JWK信号中是一个“孩子”,它可以与其中一个数组元素中的“孩子”相匹配,与相关密钥相关联。

如何创建JWK?到这里来。依赖项列在顶部,它们可能在幕后使用openssl。

 类似资料:
  • 假设我有一个python结构,表示RSA密钥对,如下所示: 如何编写python代码来生成可用于验证使用此RSA私钥签名的JWT的JWK?使用的算法是RSA256。 这个网站mkjwk完成了我想做的事情。但我正试图用python代码来做到这一点。

  • 我需要生成一个具有以下参数的JWK: > “kty”:键类型 “孩子”:密钥标识 “使用”:“sig”公钥使用 “n”:模数 “e”:“AQAB”公众指数 "x5c": X.509证书链 “x5t”:X.509证书SHA-1指纹 注: > 应包含使用“x5t”(X.509 SHA-1指纹)和“x5c”(X.509证书链)参数的X.509证书 前5个参数(kty,孩子,使用,n,e)相当简单,不是问

  • 创建一个Canvas画布,用于显示WebGL的渲染结果,canvas元素和div等元素一样是HTML的一个元素,只是Canvas画布具有2D和3D绘图功能。 <!--canvas标签创建一个宽高均为500像素,背景为蓝色的矩形画布--> <canvas id="webgl" width="500" height="500" style="background-color: blue"></canv

  • 5.2.2 创建画布 为了绘图,首先要有画布。Tkinter 中提供了画布(Canvas),可以在画布上绘制图形、 文本,也可以在上面放置命令按钮等 GUI 构件。画布实际上是一个 Canvas 对象,它包含 一些属性(如画布的高度、宽度、背景色等),也包含一些方法(如在画布上创建图形、删 除或移动图形等)。 创建画布对象的语句模板如下: c = Canvas(<窗口>,<选项 1>=<值 1>,

  • 问题内容: 我创建了一个框架,然后创建了一个画布。 接下来,我要在画布上添加一个按钮。 但是,当我打包按钮时,我看不到画布! 这是我尝试过的: 问题答案: Tkinter管理器会尝试将父窗口小部件的大小调整为正确的大小,以包含其子窗口小部件,并且默认情况下不会更大。画布就在其中- 但它与按钮的尺寸完全相同,因此是不可见的。 如果要在画布上放置小部件 而不 导致画布动态调整大小,则需要以下功能: 这

  • 我遵循了使用这个网站https://flutter.io/android-release/部署flutter的步骤 当我运行flutter build apk时,我得到了这个错误 密钥.属性