在现代 web 应用开发中,安全是至关重要的。OAuth2 和 OpenID Connect 是两种广泛使用的安全协议,其中 Keycloak 是一个常见的开源身份和访问管理解决方案。在使用 Keycloak 时,获取公钥来验证令牌签名是一个常见的任务。这时可以使用 get-keycloak-public-key-with-agent-d
npm 包来方便地完成。
安装
安装 get-keycloak-public-key-with-agent-d
很简单,只需要运行下面的命令:
npm install get-keycloak-public-key-with-agent-d
使用
获取公钥的方法很简单,只需要在代码中引用 get-keycloak-public-key-with-agent-d
并调用 getKeycloakPublicKeyWithAgentD
函数即可。
-- -------------------- ---- ------- ----- - ------------------------------ - - ------------------------------------------------ ----- -------- - ---------- ----- ------ ----- ----- - ---------- ----- ------- ----- --------- - ------- - ------ ----- -------- -------------- - ----- --------- - ----- ---------------------------------------- ------ ----------- ------------------- ------ ----------- - ---------------
可以看到,使用这个包只需要传入 Keycloak realm 的 URL、realm 的名称和 agentd 的 URL,就可以异步返回公钥。
示例代码
为了展示如何使用 get-keycloak-public-key-with-agent-d
npm 包来验证 JWT,下面是一个使用 Express 框架的示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ------------------------ ----- - ------------------------------ - - ------------------------------------------------ ----- -------- - ---------- ----- ------ ----- ----- - ---------- ----- ------- ----- --------- - ------- - ------ ----- --- - ---------- ----- ---- - ----- ----- -------- -------------- - ----- --------- - ----- ---------------------------------------- ------ ----------- ------ ---------- - ----------------- ----- ----- ---- -- - ----- ---------- - -------------------------- -- ------------- - -------------------- - ----- ----- - ------------------ ------ -- -------- - -------------------- - --- - ----- --------- - ----- --------------- ----- ------- - ----------------- ---------- - ----------- --------- --- ---------------------- --------- --------------- --------- - ----- --- - ----------------- -------------------- - --- ---------------- -- -- - -------------------- --- --------- -- --------------------------- ---
运行上面的代码后,在浏览器中打开 http://localhost:3000/hello,并在请求头中添加一个 JWT(可以使用 curl 等命令行工具来实现),则可以看到输出 "Hello World!"。如果 JWT 不合法,则会返回 401。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056c7681e8991b448e5f49