fenghuo/apps/web/lib/oidc-config.ts

36 lines
1.1 KiB
TypeScript

import { UserManager, WebStorageStateStore } from 'oidc-client-ts';
// 创建存储配置的函数,避免 SSR 问题
const createUserStore = () => {
if (typeof window !== 'undefined' && window.localStorage) {
return new WebStorageStateStore({ store: window.localStorage });
}
return undefined;
};
// OIDC 客户端配置
export const oidcConfig = {
authority: 'http://localhost:3000/oidc', // 后端OIDC provider地址
client_id: 'demo-client',
client_secret: 'demo-client-secret',
redirect_uri: 'http://localhost:3001/auth/callback',
post_logout_redirect_uri: 'http://localhost:3001',
response_type: 'code',
scope: 'openid profile email',
automaticSilentRenew: true,
includeIdTokenInSilentRenew: true,
revokeTokensOnSignout: true,
...(typeof window !== 'undefined' && { userStore: createUserStore() }),
};
// 创建用户管理器实例
export const userManager = typeof window !== 'undefined' ? new UserManager(oidcConfig) : null;
// OIDC 相关的URL
export const oidcUrls = {
login: `${oidcConfig.authority}/auth`,
logout: `${oidcConfig.authority}/logout`,
token: `${oidcConfig.authority}/token`,
userinfo: `${oidcConfig.authority}/userinfo`,
};