Easy Auth

2026/1/17

banner

简介

Easy Auth 是基于Better Auth的OIDC & SSO provider,开源可自行部署,类似于Auth0、Okta等商业化身份认证服务。

多个 Web 应用和 小程序 可以使用 Easy Auth 作为统一的身份认证服务,用户只需注册一个账号即可登录所有接入的应用。

使用

README部署并设置为管理员

进入Apps页面,创建一个新的应用

可以填写多个回调地址,用于不同环境。请注意回调地址需要完全匹配

在Client App配置Better AuthgenericOAuth插件

export const authConfig: BetterAuthOptions = {
    database: drizzleAdapter(env.web_chat, {
        provider: "sqlite",
    }),
    plugins: [
        genericOAuth({
            config: [
                {
                    providerId: "easy-auth",
                    clientId: process.env.EASY_AUTH_CLIENT_ID,
                    clientSecret: process.env.EASY_AUTH_CLIENT_SECRET,
                    discoveryUrl:
                        process.env.NODE_ENV === "production"
                            ? "https://account.jaze.top/api/auth/.well-known/openid-configuration"
                            : "http://localhost:3000/api/auth/.well-known/openid-configuration",
                    pkce: true,
                    scopes: ["openid", "profile", "email", "offline_access"],
                    overrideUserInfo: true,
                },
            ],
        }),
    ],
    trustedOrigins: [process.env.SITE_URL],
    session: {
        cookieCache: {
            enabled: true,
            maxAge: 5 * 60,
        },
    },
    advanced: {
        cookiePrefix: "wc",
    },
};

支持Stateless Mode ,无需数据库存储session,你可以添加以下配置固定User ID

export const authConfig: BetterAuthOptions = {
    // database: drizzleAdapter(env.web_chat, {
    //     provider: "sqlite",
    // }),
    databaseHooks: {
        user: {
            create: {
                // @ts-ignore
                before: (user) => {
                    return {
                        data: {
                            ...user,
                            id: user.sub,
                        },
                    };
                },
            },
        },
    },
};

支持SSO插件,回调地址填写/api/auth/sso/callback/easy-auth

完整示例应用仓库:Web Chat,使用Cloudflare生态构建的多功能聊天应用