自建Hasura控制台权限管控:基于LDAP组限制访问方案咨询
Hasura控制台LDAP组权限管控方案
一、Apigee代理方案完全可行,实现步骤如下
- LDAP组校验:在Apigee代理中配置LDAP验证策略,拦截所有访问Hasura Console的请求,先校验用户是否属于公司指定LDAP组,校验失败直接返回403。
- 注入管理员令牌:校验通过后,Apigee在转发请求到Hasura Console时,自动在请求头中添加Hasura管理员令牌(比如
X-Hasura-Admin-Secret: <你的管理员密钥>或Authorization: Bearer <admin-token>,根据你的Hasura配置选择)。不需要重定向,让Apigee做反向代理即可,用户全程无需接触管理员令牌。 - 会话维持:Hasura Console会基于Apigee注入的令牌建立会话,用户正常操作控制台即可,所有后续请求都会经过Apigee的LDAP校验。
二、更直接的实现方式:自定义控制台Auth Webhook
Hasura支持通过自定义Webhook直接管控控制台访问权限,无需依赖第三方代理:
- 开启控制台Auth Webhook:启动Hasura时添加启动参数:
其中hasura serve --console-auth-hook https://your-auth-webhook.com/validate --console-auth-hook-mode=strict--console-auth-hook-mode=strict表示所有控制台请求必须通过Webhook校验才能访问。 - 实现Webhook校验逻辑:你的Webhook需要接收Hasura传来的请求信息(比如用户的身份Cookie、请求头),调用公司LDAP服务验证用户是否属于指定组:
- 校验通过:返回
200 OK,可在响应头添加X-Hasura-Role: admin(可选) - 校验失败:返回
403 Forbidden
- 校验通过:返回
- 集成统一身份认证:用户访问控制台前,先通过公司基于LDAP的SSO系统完成登录,获取身份凭证(比如Cookie),访问控制台时携带该凭证,Webhook以此完成权限校验。
补充说明
- 你提到的JWT认证确实仅作用于GraphQL API,无法管控控制台访问,所以需要用上述两种方案之一。
- 若用Apigee方案,务必确保代理拦截Hasura Console的所有路径(默认是
/console及子路径),且管理员令牌仅在Apigee后端转发时注入,不暴露给前端用户。
内容的提问来源于stack exchange,提问作者giorgio amato
相关产品推荐
相关产品推荐

