Keycloak 护照战略 -- -- oAuth2/OIDC
该图书馆提供制作准备和维护的Keycloak护照连接器,提供下列关键功能:
-
在同一应用程序中使用多个域( 多租借)
-
在 keycloak 中使用 oAuth2/ 打开 ID 连接客户端
-
通过 JSON API 从 keycloak 自动获取用户数据
为什么? 这事还没完成吗?
在某种程度上,是的。 大约有3到4个重置者将自己作为"Keycloak Passport"的品牌,然而其中没有一个被积极维护,并且大部分要么是完全空的,不允许使用多域,只执行协议的一部分,并/或不从Keycloak获取用户的数据. Keycloak 计划本身也有一个专用的节点JS连接器, 不过, 如果您想要将 Keycloak 作为“ yeat another” 护照策略, 该项目填补了这一空白.
使用量
安装
npm install @exlinc/keycloak-passport
导入
import KeycloakStrategy from "@exlinc/keycloak-passport";
初始化
// Register the strategy with passport
passport.use(
"keycloak",
new KeycloakStrategy(
{
host: process.env.KEYCLOAK_HOST,
realm: process.env.KEYCLOAK_REALM,
clientID: process.env.KEYCLOAK_CLIENT_ID,
clientSecret: process.env.KEYCLOAK_CLIENT_SECRET,
callbackURL: `/api${AUTH_KEYCLOAK_CALLBACK}`
},
(accessToken, refreshToken, profile, done) => {
// This is called after a successful authentication has been completed
// Here's a sample of what you can then do, i.e., write the user to your DB
User.findOrCreate({ email: profile.email }, (err, user) => {
assert.ifError(err);
user.keycloakId = profile.keycloakId;
user.imageUrl = profile.avatar;
user.name = profile.name;
user.save((err, savedUser) => done(err, savedUser));
});
}
)
);
路线
router.get(
routes.AUTH_KEYCLOAK,
passport.authenticate("keycloak", DEFAULT_PASSPORT_OPTIONS)
);
router.get(
routes.AUTH_KEYCLOAK_CALLBACK,
passport.authenticate("keycloak", DEFAULT_PASSPORT_OPTIONS),
AuthController.keyCloakSuccess
);
贡献/反馈
欢迎通过 " 问题 " 和 " 拉动 " 倡议提供一切形式的协助