当前位置: 首页 > 知识库问答 >
问题:

使用Zuul作为身份验证网关

雷方伟
2023-03-14

背景

我想实现本文中提出的设计

  1. 客户端首先使用IDP(OpenID Connect/oauth2)进行身份验证
  2. IDP返回一个访问令牌(不透明的令牌,没有用户信息)
  3. 客户端使用授权头中的访问令牌通过API网关进行调用
  4. API网关使用访问令牌向IDP发出请求
  5. IDP验证访问令牌是否有效,并以JSON格式返回用户信息
  6. API网关将用户信息存储在JWT中,并使用私钥对其进行签名。然后将JWT传递给下游服务,后者使用公钥
  7. 验证JWT
  8. 如果一个服务必须调用另一个服务来满足请求,它将传递JWT,作为请求的身份验证和授权
    null

目前,如果身份验证失败,过滤器不会将JWT添加到报头中,而401将来自下游服务。我希望我的网关能阻止这个不必要的电话。

我试图了解如何使用com.netflix.zuul.context.requestcontext来实现这一点,但是文档非常糟糕,我找不到方法。

共有1个答案

嵇丰
2023-03-14

您可以尝试在当前上下文中设置setsendzuulresponse(false)。这不应该路由请求。您还可以从上下文调用removeroutehost(),这将实现同样的效果。可以使用SetResponseStatusCode设置401状态代码。

 类似资料:
  • 我想通过Spring Cloud介绍Zuul作为一个API网关在少数服务前面。 我关心的问题: > 网关将位于许多服务的前面 某些服务可能公开不需要身份验证的endpoint null

  • 我一直在尝试用Zuul、Eureka和Spring boot构建一个应用程序,最近我决定尝试登录。作为提醒,我已经配置了身份验证服务(使用OAuth2.0),并且可以使用curl成功地进行身份验证。我还可以向其他拥有受保护资源的微服务发出get请求(同样,只能使用CURL,因为我可以在身份验证头中注入令牌)。我关心的是,我想以Zuul为门户来做这件事。[![在此处输入图像说明][1]][1] 当我

  • 我试图建立一个新的服务器,作为网关(使用sping-Cloud-网关作为基础),我需要能够在实际转发任何后续请求之前通过远程LDAP服务器验证用户。我将如何实现这个(包,配置等)?

  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工

  • 问题内容: 我目前有一个Palm WebOS应用程序,该应用程序使用Ajax.Request通过基本身份验证连接到Web服务。要发送用户名和密码,我只需将其包含在url(即http:// username:password @ ip-address:port / )中即可,效果非常好,期望密码包含字母数字字符以外的任何字符(例如, ,最近有一个用户给我发送电子邮件,该用户的密码中包含“ @”和“&

  • 我有一个需要以两种不同方式保护的API: 1) 对除1以外的所有请求URL使用JWT,该URL需要使用基本身份验证进行保护 2) 一个url的基本身份验证。 我已经为JWT和Basic Auth设置了安全配置。我的问题是,当我使用有效的用户名和密码请求基本的经过身份验证的URL时,它会成功地对我进行身份验证,并将数据存储在cassandra中。 然后,我希望必须通过/api/login为所有其他请