---
title: Java SDK
description: 安装并使用官方 Sudomimus Java 包。
editUrl: true
head: []
template: doc
sidebar:
  order: 6
  hidden: false
  attrs: {}
pagefind: true
draft: false
---

import { CardGrid, LinkCard } from "@astrojs/starlight/components";

Java SDK 是面向 JDK 17 的 Gradle multi-module 项目。目前可用的是 alpha 状态的 token module；Connect、Session 与 Native module 仍在计划中。

## 包

| Module | Maven coordinates | 用途 | 状态 |
| --- | --- | --- | --- |
| `token` | `com.sudomimus:sudomimus-token` | 解析并验证 Sudomimus access、refresh 与 OIDC ID token。 | Alpha |
| `connect` | `com.sudomimus:sudomimus-connect` | Connect inquiry 生命周期：establish、status poll、redeem、info。 | Planned |
| `session` | `com.sudomimus:sudomimus-session` | Refresh token 生命周期：refresh、introspect、logout、revoke-all。 | Planned |
| `native` | `com.sudomimus:sudomimus-native` | Steam ticket 与 AccessKey direct-issue。 | Planned |

发布到包仓库后，可以这样引入 token module：

```kotlin
dependencies {
    implementation("com.sudomimus:sudomimus-token")
}
```

## Token 验证

如果服务会接收 Sudomimus JWT 并在本地验证，请使用 token module。从配置好的应用 Session JWK Set `GET /applications/{applicationAnchor}/jwks.json` 按 token `kid` 解析密钥，不要根据不可信的 audience 拼接 URL。请按 HTTP 响应头缓存密钥集，遇到未知 `kid` 时刷新一次。

验证契约与其他 SDK 一致：解析 JWT，要求 RS256、预期的 token kind 与 audience、非空 `kid` 和有效过期时间，再选择对应 JWK 验证 RSA-SHA256 签名。

## 源码

<CardGrid>
<LinkCard
    title="Java modules"
    description="源码与 module README。"
    href="https://github.com/sudomimus/sudomimus/tree/master/sdks/java"
/>
<LinkCard
    title="选择 SDK"
    description="官方 SDK 与 Sudomimus API 的对应关系。"
    href="/zh-cn/sdk/overview/"
/>
</CardGrid>