Moodle LTI Advantage自动注册:如何配置RSA公钥相关参数
Moodle LTI自动注册:设置RSA公钥并自动填充
要在Moodle LTI动态注册中指定「Public key type」为RSA key,并自动填充「Public key」字段,你需要在注册请求的JSON payload中添加public_jwk字段,该字段是符合JWK(JSON Web Key)规范的RSA公钥对象。
核心参数说明
public_jwk字段的结构必须包含以下RSA密钥属性:
kty: 固定为RSA,用于告诉Moodle这是RSA类型的公钥,对应界面上的「Public key type」设置。e: RSA公钥的指数,通常取值为AQAB(对应十进制65537,是LTI标准推荐的默认值)。n: RSA公钥的模值,需要以base64url编码(注意:不是普通Base64,需去掉=填充字符,替换+为-、/为_)。alg: 指定签名算法,推荐使用RS256(SHA-256 with RSA),兼容Moodle的LTI 1.3验证机制。use: 固定为sig,表示该密钥用于签名验证,符合LTI身份验证的用途。
完整注册请求示例
将public_jwk嵌入到动态注册的JSON请求体中,示例如下:
{ "client_name": "你的LTI工具名称", "response_types": ["id_token"], "grant_types": ["client_credentials", "authorization_code"], "redirect_uris": ["https://your-tool-domain.com/lti/callback"], "public_jwk": { "kty": "RSA", "e": "AQAB", "n": "mZtXt8...(你的RSA公钥模值base64url编码)", "alg": "RS256", "use": "sig" }, "scope": "openid", "token_endpoint_auth_method": "private_key_jwt" }
传递方式
- 将上述JSON作为请求体,发送
POST请求到Moodle的LTI动态注册端点(通常路径为/mod/lti/callback.php)。 - 请求头必须设置
Content-Type: application/json。 - 确保请求使用HTTPS协议,Moodle默认会拒绝HTTP的动态注册请求。
注意事项
- 推荐使用2048位或更长的RSA密钥对,避免因密钥长度不足被Moodle拒绝。
- 如果你的公钥是PEM格式,可以通过OpenSSL命令转换为JWK格式,例如生成
n值的base64url编码:openssl rsa -in public_key.pem -pubout -outform PEM | openssl rsa -pubin -outform DER | base64url - 确认
token_endpoint_auth_method设置为private_key_jwt,这是LTI 1.3要求的验证方式,与RSA密钥搭配使用。
内容的提问来源于stack exchange,提问作者saladukha
相关产品推荐
相关产品推荐

