实施RFC7523

时间:2018-08-09 09:54:37

标签: go jwt openid-connect

我想使用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进行客户端身份验证?

2 个答案:

答案 0 :(得分:0)

RFC7523定义的是一种将JWT用作客户端身份验证或授权授予的方法。这意味着如果定义扩展名

  1. 使用JWT在访问令牌请求中将客户端身份验证信息传送到授权服务器(如果支持,OpenID Connect服务器)

  2. 在访问令牌请求中将JWT用作授权授予(将此与OAuth 2.0中的授权代码进行比较)

在两种情况下,JWT都是由令牌授予接收授权服务器信任的某个方发出的。

现在,您不必使用库即可使用此扩展。当您遇到问题时,您必须创建一个从GO客户端到授权服务器的PUT请求。

但是棘手的部分是为此过程获取有效的JWT。正如我所说,该JWT必须由有效方签发。并且您的授权服务器应配置为接受JWT。

答案 1 :(得分:0)

gin-oauth-serverAuthlete版本2.x的组合支持client authentication方法。