其中 application.conf - Jwt 配置

Ktor application.conf - Jwt configuration

我正在尝试在我的 ktor 应用程序中设置 JWT 身份验证Documentation 建议在 application.conf 文件中定义一个 jwt 验证器,如下所示:

jwt {
    domain = "https://jwt-provider-domain/"
    audience = "jwt-audience"
    realm = "ktor sample app"
}

我不是 jwt 身份验证专家,所以我想知道 domainaudiencerealm 设置的含义是什么,遗憾的是文档缺少这些细节。

据我所知,文档将域称为发行者 (iss) 声明,将受众称为 aud 声明(在 https://www.rfc-editor.org/rfc/rfc7519#section-4.1 中进行了描述)。其他设置可能不是必需的。

通过查看生成的 jwt 令牌,结果发现:

  • audienceRFC 7519“aud”声明中解决:

The "aud" (audience) claim identifies the recipients that the JWT is intended for.

通常它是一个 case-sensitive 字符串数组,包含客户端标识符。例如,它可能是应用程序包名称,例如:

ios.organization.appname, android.organization.appname
  • domainRFC 7519“iss”声明中解决:

The "iss" (issuer) claim identifies the principal that issued the JWT.

它是特定于应用程序的,在我的例子中,我选择了我的身份验证服务器的标识符(单点登录),例如:

sso.organization.com
  • Realm 在我生成的 jwt 令牌中没有这个字段的任何痕迹,但是从 ktor documentation 看来这个字段被用在 WWW-Authenticate响应 header