我想使用OpenID Connect服务器,并想use JWTs for Client Authentication:
POST /token.oauth2 HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&
client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3A
client-assertion-type%3Ajwt-bearer&
client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0.
eyJpc3Mi[...omitted for brevity...].
cC4hiUPo[...omitted for brevity...]
就我而言,我需要RFC7523实现,而GO在oauth2中实现了它。但是我只发现了如何use JWTs as Authorization Grants:
POST /token.oauth2 HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&assertion=eyJhbGciOiJFUzI1NiJ9.
eyJpc3Mi[...omitted for brevity...].
J9l-ZhwP[...omitted for brevity...]
那么我如何在Go中使用JWT进行客户端身份验证?
答案 0 :(得分:0)
RFC7523定义的是一种将JWT用作客户端身份验证或授权授予的方法。这意味着如果定义扩展名
使用JWT在访问令牌请求中将客户端身份验证信息传送到授权服务器(如果支持,OpenID Connect服务器)
在访问令牌请求中将JWT用作授权授予(将此与OAuth 2.0中的授权代码进行比较)
在两种情况下,JWT都是由令牌授予接收授权服务器信任的某个方发出的。
现在,您不必使用库即可使用此扩展。当您遇到问题时,您必须创建一个从GO客户端到授权服务器的PUT请求。
但是棘手的部分是为此过程获取有效的JWT。正如我所说,该JWT必须由有效方签发。并且您的授权服务器应配置为接受JWT。
答案 1 :(得分:0)
gin-oauth-server和Authlete版本2.x的组合支持client authentication方法。