服务身份与管理嵌入 SDK
使用当前服务端与管理嵌入协议,保持目标范围及权限边界。
服务自己的身份
server-sdk使用本服务派生密钥签发绑定serviceKey的服务身份,并通过平台自省验证。getServiceToken的参数是目标audience,不是另一个签发者。服务只获得自己的密钥,不获得平台主密钥。
TypeScript
import { OptimusServerSdk } from '@mosaic-base/server-sdk';
export function createServiceIdentity(apiBaseUrl: string, serviceKey: string,
serviceIdentitySecret: string) {
return new OptimusServerSdk({
baseUrl: apiBaseUrl,
serviceKey,
serviceIdentitySecret, // server-only, this service's derived secret
cacheTtlMs: 0,
});
}
// A service must never receive the platform master secret.受控管理页面
管理页经宿主握手获得120秒、服务限定身份,业务后端继续检查每个操作的读写权限。初始握手和续期失败都必须停止受保护操作。主题和语言通过上下文订阅同步。
TypeScript
import { init, onContextChange, requestToken } from '@mosaic-base/admin-embed';
export async function connectAdministration() {
const context = await init({ baseOrigin: new URL(document.baseURI).origin });
const unsubscribe = onContextChange(({ locale, theme }) => {
document.documentElement.lang = locale;
document.documentElement.dataset.theme = theme;
});
return { context, unsubscribe, refreshIdentity: requestToken };
}
// Keep the delegated token in memory. Backend still checks every operation.入口与缓存
公开页面/API、管理与内部调用分别使用对应Gateway Plane。子应用校验签名上下文,不信任客户端自填Header。自省缓存不能超过身份有效期;需要即时反映停用或撤权时用cacheTtlMs:0。