跳转到内容

C# SDK

查看 Markdown

C# SDK 为 Connect、Session、Native 和 Token surface 发布 .NET 包。Device authorization 当前没有 C# 包;这个流程请直接使用 Device API 参考

用途
Sudomimus.ConnectConnect inquiry 生命周期,以及通过应用元数据验 token。
Sudomimus.SessionRefresh、introspection、logout、revoke-all,以及 token store 辅助。
Sudomimus.NativeSteam ticket 与 AccessKey direct-issue。
Sudomimus.Token独立的 token 解析与验证辅助。

安装当前集成需要的包:

Terminal window
dotnet add package Sudomimus.Connect
dotnet add package Sudomimus.Session
using Sudomimus.Connect;
var client = new ConnectClient(new ConnectClientOptions
{
ClientAuth = new ConnectClientAuthWithKey
{
ApplicationAnchor = "your-app-anchor",
PrivateKeyPem = File.ReadAllText("client-auth.pem"),
},
});
var inquiry = await client.EstablishAsync(new EstablishRequest
{
ApplicationAnchor = "your-app-anchor",
});

/establish 要求 audience 为 sudomimus-connect 的 client-auth JWT。配置 ConnectClientOptions.ClientAuth 后,SDK 会完成签名;也可以提供自己的 signer。

using Sudomimus.Session;
var session = new RotatingSessionClient(
new SessionClient(),
new InMemoryTokenStore());
await session.SeedAsync(new TokenPair
{
AccessToken = accessToken,
RefreshToken = refreshToken,
});
var newAccessToken = await session.RefreshAsync();
await session.LogoutAsync();

RevokeAllAsync 是应用后端操作,需要 audience 为 sudomimus-session 的 client-auth 签名。

令牌验证与 Connect 解耦。请从每应用 Session JWK Set GET /applications/{applicationAnchor}/jwks.json 解析 token 的 kid,按 Cache-Control 缓存,并使用 Sudomimus.Token 完成解析与签名验证。Connect /info 只返回本地化应用元数据。

验签后,把 payload sub 作为应用可见用户键,payload sid 作为逻辑会话 id,payload jti 作为 bearer 实例 id。Access token 不携带个人资料;refresh token 不携带用户标识,并额外包含 rotationVersion。当前资料从 Session /userinfo 获取。只做签名验证无法观察后续 logout,因此实时权威决策要使用 Session introspection。