问题标签 [micronaut-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1743 浏览

jwt - 提供 JWT 时,如何在 micronaut 后端加载“用户”

我有一个 Micronaut 微服务,它通过本指南中的JsonWebTokens (JWT) 处理身份验证。

现在我想扩展这段代码。我的应用程序中的用户有一些额外的属性,例如电子邮件、地址、teamId 等。我在数据库中有所有用户。

我如何在后端控制器方法中知道哪个用户对应于客户端发送的 JWT?

该指南包含 Micronaut REST 控制器的示例代码:

我知道我可以得到校长的名字,即。来自 HttpRequest 的用户名。但是我如何获得我的附加属性?

(也许我对 JWT 有点误解???)

  • 这些是 JWT 的“声明”吗?
  • 我是否需要通过数据库表中的用户名加载相应的用户?
  • 如何验证发送的用户名是否确实有效?

编辑 更详细地描述我的用例:

我的用例的安全要求

  • 不要向客户公开有效信息
  • 验证客户端(移动应用程序)通过 REST 发送的所有内容

身份验证流程

带有 JWT 的默认 oauth2 流:

前提条件:用户已经注册。用户名、哈希(密码)和其他属性(电子邮件、地址、团队 ID、..)在后端是已知的。

  1. 客户端 POST 用户名和密码到 /login 端点
  2. 客户端收到 JWT 作为回报,使用服务器密码签名
  3. 在以后的每个请求中,客户端都会将此 JWT 作为 Http 标头中的承载发送。
  4. 后端验证 JWT <==== 这是我想知道如何在 Micronaut 中执行此操作的内容。

问题

  • 如何验证 JWT 是否有效?
  • 我应该如何以及在哪个 Java 类中获取该用户的附加信息(附加属性)。我应该使用什么 ID 来获取此信息。解码后的 JWT 中的“子”或“名称”?
0 投票
1 回答
146 浏览

java - Micronaut Custom SecurityRule 检查用户是否经过身份验证?

我有以下自定义安全规则

在 HttpRequest<?> 请求标头中,我找不到检查用户是否经过身份验证的方法,声明是否存在?

如何检查用户是否经过身份验证?

0 投票
1 回答
613 浏览

java - 在 micronaut 客户端请求中添加 Token 标头

在 micronaut 中,我有一个用例,我需要将 oauth2 访问令牌作为自定义标头(不是 Header Name='Authorization)添加到每个请求中。

目前,我正在获取令牌并将 Authorization 标头添加到https://micronaut-projects.github.io/micronaut-security/latest/guide/#clientecredentialshttpclient指定的每个请求。但我还必须为每个传出请求添加另一个标头,其值为令牌。所以,我使用 HttpClientFilter 来拦截请求,然后读取 Authorization Header,然后添加这个值为 token 的自定义标头。但这会导致并发问题。有时 ClientCredentialsHttpClientFilter 在 HttpClientFilter 之后被调用,在这种情况下我得到 null 作为令牌。

那么,有没有办法确保在 HttpClientFilter 之前调用 ClientCredentialsHttpClientFilter 呢?

编辑:

当我通过 IDE 运行时,所有这些都可以正常工作。但是当我使用本机图像时不运行。

0 投票
0 回答
254 浏览

oauth-2.0 - 使用社交登录(例如 Google 和 Facebook 登录)保护 micronaut rest api

鉴于我有集成了 Google 和 Facebook 登录的移动应用程序,我如何在 Micronaut REST API 中使用 Google 和 Facebook 身份验证?未来,移动应用程序将允许用户在社交登录之外注册(创建新帐户)。

感谢您撰写以下文章:

上面两篇文章都提到了“Micronaut 从 Cookie 中提取 JWT 并使用远程 Json Web Key Set 验证 JWT 签名......”

目前,移动应用程序具有从 Facebook OAuth2 和 Google OAuth2 返回的访问令牌,我不能简单地将访问令牌作为承载令牌传递来进行身份验证吗?

我相信我在这里遗漏了一些点,请指教。

感谢您能指出我正确的方向。

非常感谢。

0 投票
0 回答
60 浏览

yaml - 将逗号分隔的字符串转换为 yaml 中的列表

我在不同的项目中使用 spring security 和 micronaut security 来保护我的 API。配置在 YAML 文件中,如下所示。

因此角色 ID 是可配置的。

现在的问题是,这些角色 id 需要是数组,像这样simple-role: user-role-id1,user-role-id2

并且访问字段需要将这些角色视为列表,而不是单个元素。

所以最终访问字段的行为应该像

有没有简单的YML方式?

我知道我可以使用HttpSecurity配置而不是在 yml 中执行此操作,而在代码中我可以拆分并设置。但我试图找到 yml 方式。

还因为,我无法HttpSecurity在 micronaut 中找到配置类型。

0 投票
1 回答
565 浏览

java - 如何修改 Micronaut Http Filter 的顺序,使其在 Micronaut Security 之后执行

我有一个 checkForBankId 注释

我有一个 BankIdSecurityService

然后我有过滤器,每个请求执行一次

在控制器内部,我们在要过滤请求的地方应用@CheckForBankId

过滤器工作正常。缺少的是它在 microanut 安全性之前执行,因此,进入标头的令牌未经身份验证,在某些情况下,它可能导致一些问题,例如如果将过期令牌传递给标头并且我的解析器将解析令牌并将从中返回用户,但由于令牌已经无效,因此没有任何意义。它应该在进入过滤器之前已经被拒绝......所以,就像这个过滤器在 micronaut 安全之后执行。我尝试覆盖 getOrder 方法,但它不起作用:(

0 投票
1 回答
97 浏览

http - Micronaut 的 netty 服务器 http 请求缺少标头

我正在尝试将自定义身份验证服务与 micronaut 安全性集成在一起,为此我实现了我自己的 AuthenticationProvider 并且它适用于基本身份验证,但是我还需要处理请求中传递的身份验证令牌。

为此,我尝试实现自己的 AuthenticationFetcher 并在 fetchAuthentication 方法中尝试获取自定义身份验证标头,然后对请求进行身份验证。

我遇到的问题是 netty 的 request.getHeaders() 没有返回发送到网络服务的所有标头(我从浏览器开发者控制台确认)

Web服务中可见的标头

这是我的应用设置

任何反馈表示赞赏。

0 投票
1 回答
73 浏览

logout - 为什么在 Micronaut 中注销控制器是匿名的?

io.micronaut.security.endpoints.LogoutController注释为@Secured(SecurityRule.IS_ANONYMOUS)

通常,人们会期望用户在注销之前进行身份验证。我错过了什么?

0 投票
0 回答
64 浏览

java - Micronaut 安全 - 为 RSASignatureConfiguration 设置 PublicKey

我在 micronaut 中找到的所有关于如何验证 JWT 令牌的示例都使用了“秘密”。他们这样做:

我的问题是:使用私钥/公钥时我必须设置哪些属性?

注意:在我的情况下,我只需要验证令牌。不生成它。

0 投票
0 回答
114 浏览

java - 在 Micronaut 集成测试中使用带有 OpenID Connect 的远程服务器验证 JWKS

我在 Micronaut 中使用 ASP.NET Identity server 4 作为授权服务器,并具有以下配置application.yml

我写了AuthenticationProvider如下

应用程序-test.yml

我有一个集成测试,它生成令牌并根据 JWT 的签名进行验证

当我运行集成测试时,它会尝试从 https://localhost:5001/.well-known/openid-configuration/jwks 获取 jwks 并且签名验证失败。

日志

使用 OpenID Connect 进行集成测试的推荐方法是什么