- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想使用 Keycloak 和 Bearer token 在我的 Java REST 端点中对用户进行身份验证。
我要实现的工作流程如下:
'Authorization' : 'Bearer <token>'
执行 Http 请求标题。1、2、3 和 5 已经实现并正在运行,但我找不到实现 4 的方法。
我已经尝试过不同的方法:
我的 Java 端点在 WildFly 10.x 上发布的 EAR 中运行,因此我使用了 security-constraint
在我的 web.xml
并通过 keycloak.json
配置了 Keycloak .
这工作正常,但我需要在相同的 Web 上下文中将一些 REST 端点公开(即使没有“授权” header 也可以访问),据我所知,没有办法只过滤我的安全约束中的一些请求。
我尝试实现 BearerTokenRequestAuthenticator
绝对没有成功,即使我可以,我也不认为我会收到我的身份验证请求的委托(delegate)人。
现在我已经实现了一种过滤请求的方法,需要身份验证的请求会被 ServiceSecurityInterceptor
拦截我实现的类(class)。
在该类(class)的某个时刻,我检查“授权” header 是否包含 Basic
或 Bearer
:
User loggedUser = null;
if (authorizationType.equals("Basic")) {
// ... decode Base64 username and password ...
loggedUser = userManagerBean.login(username, password);
} else if (authorizationType.equals("Bearer")) {
String token = ...; // Get token from header
// ... Here is where I need to send the token to Keycloak and receive a Principal with the username ...
loggedUser = userManagerBean.login(username):
}
我在某些地方读到我可能需要来 self 的 Keycloak 领域的公钥,但是一旦我有了它,我应该做什么?
最佳答案
几个月前,我们推出了 Keycloak。诀窍是让 Keycloak 为您完成工作。我猜你正在使用 OpenId 连接?看看这些 Java-Adapters .也许this one可以为您处理 url 模式匹配。
就我自己而言,我更喜欢将 Spring boot security 与 keycloak 结合使用。 Keycloak Spring Boot Adapter与 Java 应用程序很好地集成。您只需在 Java 应用程序和 Keycloak 服务器上进行一些配置。身份验证过程由 KeyCloak 和 Keycloak 适配器自动处理。使用 Spring Boot,您还可以为您的 WildFly 服务器创建一个 ear 包。 KeyCloakPrincipial 是在 Springs 安全上下文中自动创建的 (SecurityContextHolder.getContext().getAuthentication().getPrincipal())
关于java - 服务器端使用承载 token 在 Java 中以编程方式验证 Keycloak 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49979012/
我能够CreateContainers、ListContainers、ListBlobs,但是当我尝试发出PUT/DELETE请求来上传或时>删除 Azure 存储 blob 中的文件,但发出请求后显
我想验证从浏览器应用程序传递过来的 API 中的不记名 token 。 API 将通过调用 ../userinfo 端点来验证针对 Keycloak 的 token ,如果检查运行正常,则以所需的内容
大家好,我正在关注 azure 的下一个教程: https://learn.microsoft.com/en-us/rest/api/apimanagement/current-ga/subscrip
我们即将开始集成测试我们的 REST API,这些 API 使用 ADAL.js/不记名 token /passport-azure-ad 进行保护。 现在讨论实际问题,在自动化测试中,我将如何获取不
我们即将开始集成测试我们的 REST API,这些 API 使用 ADAL.js/不记名 token /passport-azure-ad 进行保护。 现在讨论实际问题,在自动化测试中,我将如何获取不
我正在尝试通过 Javascript 将授权 token 承载发送到 REST 端点,所以我这样做: $.ajax( { url: 'http://localhost:8080/resourc
我有一个用于 SSO 的 .NET Core IdentityServer (IS),我想用它来对我的 .NET Core(后端)-Angular(客户端)应用程序进行身份验证。我希望在后端有一个 E
我需要为我的 API 发送我的 token 。我将我的 token 保存在 SharedPreferences 中,我可以恢复它。我的 API 需要一个,与 Bearer 但怎么办? 我测试了授权、H
根据RFC6750 -OAuth 2.0授权框架:不记名 token 使用,不记名 token 是: A security token with the property that any party
我们使用 Angular、.Net WebApi 和 Azure 构建多个应用程序。我们一直在做的是通过隐式 oAuth2/OIDC 授权流程通过 Azure AD 保护应用程序。 一切进展顺利,但到
使用 Owin + Oauth2 + Identity2。 我有一个带有默认基本身份验证设置的 web Api,我已对其进行修改。 我的 startup.cs 部分类 public void Conf
我的应用程序有一个自定义窗口设计,这意味着每个窗口都有以下参数集 (XAML):WindowStyle="无"AllowsTransparency="假" 其中一个子窗口需要显示一个 Flash 组件
我们正在开发具有 JWT Bearer 身份验证的 .Net Core 2.1 Web API。应用程序本身将生成并分发要发送到后端的 token 。 虽然我们已启动并运行所有内容,即我们可以从 An
我有带有 OWIN 管道的 ASP.NET 4.5 服务,它发出 OAuth access_token 以换取用户名/密码。该服务从 ng-app 调用,一旦它获得 token ,就会存储在浏览器的本
我有一个使用 Azure Active Directory 的 Java 后端应用程序。我正在使用 oauth2 不记名 token 登录。在后端,我正在搜索并使用 oauth2 属性“preferr
上周我为现有 MVC 应用程序创建了一个 API,现在正在尝试保护 API 并根据需要重新设计 MVC 端安全性。 目前,MVC 应用程序设置为通过 OWIN/OAuth/Identity 使用应用程
背景 我已经实现了 Thinktecture.IdentityServer.V3(openID Connect 之一)。我已将 OAuth2 承载 token 以以下形式返回到我的 javascrip
我不明白为什么这不起作用。我假设这是我忽略的简单事情。所有其他不使用 token 的测试方法都可以正常工作。目前 token 没有过期时间,我可以通过 Postman 很好地使用它。 @Test pu
在使用 passport 和 oauth2orize 实现 oauth2 堆栈时,在这种情况下,问题特别在于使用 oauth2orize jwt 承载。 oauth2orize jwt bearer
我正在我的 .NET Web 应用程序中实现 Web API 2 服务架构。消费请求的客户端是纯 javascript,没有 mvc/asp.net。我正在使用 OWIN 尝试根据本文 OWIN Be
我是一名优秀的程序员,十分优秀!