问题标签 [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.
jwt - 提供 JWT 时,如何在 micronaut 后端加载“用户”
我有一个 Micronaut 微服务,它通过本指南中的JsonWebTokens (JWT) 处理身份验证。
现在我想扩展这段代码。我的应用程序中的用户有一些额外的属性,例如电子邮件、地址、teamId 等。我在数据库中有所有用户。
我如何在后端控制器方法中知道哪个用户对应于客户端发送的 JWT?
该指南包含 Micronaut REST 控制器的示例代码:
我知道我可以得到校长的名字,即。来自 HttpRequest 的用户名。但是我如何获得我的附加属性?
(也许我对 JWT 有点误解???)
- 这些是 JWT 的“声明”吗?
- 我是否需要通过数据库表中的用户名加载相应的用户?
- 如何验证发送的用户名是否确实有效?
编辑 更详细地描述我的用例:
我的用例的安全要求
- 不要向客户公开有效信息
- 验证客户端(移动应用程序)通过 REST 发送的所有内容
身份验证流程
带有 JWT 的默认 oauth2 流:
前提条件:用户已经注册。用户名、哈希(密码)和其他属性(电子邮件、地址、团队 ID、..)在后端是已知的。
- 客户端 POST 用户名和密码到 /login 端点
- 客户端收到 JWT 作为回报,使用服务器密码签名
- 在以后的每个请求中,客户端都会将此 JWT 作为 Http 标头中的承载发送。
- 后端验证 JWT <==== 这是我想知道如何在 Micronaut 中执行此操作的内容。
问题
- 如何验证 JWT 是否有效?
- 我应该如何以及在哪个 Java 类中获取该用户的附加信息(附加属性)。我应该使用什么 ID 来获取此信息。解码后的 JWT 中的“子”或“名称”?
java - Micronaut Custom SecurityRule 检查用户是否经过身份验证?
我有以下自定义安全规则
在 HttpRequest<?> 请求标头中,我找不到检查用户是否经过身份验证的方法,声明是否存在?
如何检查用户是否经过身份验证?
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 运行时,所有这些都可以正常工作。但是当我使用本机图像时不运行。
oauth-2.0 - 使用社交登录(例如 Google 和 Facebook 登录)保护 micronaut rest api
鉴于我有集成了 Google 和 Facebook 登录的移动应用程序,我如何在 Micronaut REST API 中使用 Google 和 Facebook 身份验证?未来,移动应用程序将允许用户在社交登录之外注册(创建新帐户)。
感谢您撰写以下文章:
- https://guides.micronaut.io/micronaut-oauth2-oidc-google/guide/index.html
- https://guides.micronaut.io/micronaut-oauth2-cognito/guide/index.html
上面两篇文章都提到了“Micronaut 从 Cookie 中提取 JWT 并使用远程 Json Web Key Set 验证 JWT 签名......”
目前,移动应用程序具有从 Facebook OAuth2 和 Google OAuth2 返回的访问令牌,我不能简单地将访问令牌作为承载令牌传递来进行身份验证吗?
我相信我在这里遗漏了一些点,请指教。
感谢您能指出我正确的方向。
非常感谢。
yaml - 将逗号分隔的字符串转换为 yaml 中的列表
我在不同的项目中使用 spring security 和 micronaut security 来保护我的 API。配置在 YAML 文件中,如下所示。
因此角色 ID 是可配置的。
现在的问题是,这些角色 id 需要是数组,像这样simple-role: user-role-id1,user-role-id2
。
并且访问字段需要将这些角色视为列表,而不是单个元素。
所以最终访问字段的行为应该像
有没有简单的YML方式?
我知道我可以使用HttpSecurity
配置而不是在 yml 中执行此操作,而在代码中我可以拆分并设置。但我试图找到 yml 方式。
还因为,我无法HttpSecurity
在 micronaut 中找到配置类型。
java - 如何修改 Micronaut Http Filter 的顺序,使其在 Micronaut Security 之后执行
我有一个 checkForBankId 注释
我有一个 BankIdSecurityService
然后我有过滤器,每个请求执行一次
在控制器内部,我们在要过滤请求的地方应用@CheckForBankId
过滤器工作正常。缺少的是它在 microanut 安全性之前执行,因此,进入标头的令牌未经身份验证,在某些情况下,它可能导致一些问题,例如如果将过期令牌传递给标头并且我的解析器将解析令牌并将从中返回用户,但由于令牌已经无效,因此没有任何意义。它应该在进入过滤器之前已经被拒绝......所以,就像这个过滤器在 micronaut 安全之后执行。我尝试覆盖 getOrder 方法,但它不起作用:(
logout - 为什么在 Micronaut 中注销控制器是匿名的?
io.micronaut.security.endpoints.LogoutController
注释为@Secured(SecurityRule.IS_ANONYMOUS)
通常,人们会期望用户在注销之前进行身份验证。我错过了什么?
java - Micronaut 安全 - 为 RSASignatureConfiguration 设置 PublicKey
我在 micronaut 中找到的所有关于如何验证 JWT 令牌的示例都使用了“秘密”。他们这样做:
我的问题是:使用私钥/公钥时我必须设置哪些属性?
注意:在我的情况下,我只需要验证令牌。不生成它。
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 进行集成测试的推荐方法是什么