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

用Keycloak构建Java OAuth2.0授权服务器

水飞掣
2023-03-14
  • 目标:Java授权服务器:
    • OAuth2.0授权代码授予细粒度权限流(不仅仅是SSO服务器)
    • 用户管理和身份验证:自定义数据库
    • 客户端管理和身份验证:KeyCloak
    • 在开发中应该使用什么Keycloak适配器/API?
    • 如果用户要出现在Keycloak中,应该如何管理/显示它们?

    我是Keycloak的初学者,虽然我认为我理解主要原理,但它似乎是一个丰富的工具,我担心我可能仍然在使用它的最佳方法的某些方面存在错误。请不要犹豫纠正我。

    用户的同意将使用OAuth2.0授权代码授予流给予。它们将登录,指定它们授予哪些权限,拒绝哪些权限,然后客户端检索它将用于访问API的访问令牌。

    我的理解是,Keycloak可以处理授权令牌,但它不应该知道任何适用的东西,即我们的权限是什么。因此,我考虑构建一个自定义授权服务器,它将使用Keycloak处理所有身份/身份验证问题,但将自己处理应用权限。

    然后,我们将使用Keycloak进行客户端身份验证和授权代码/访问令牌管理,应用部分将检查权限。

    我一直在查看可用的Java适配器。当涉及到身份验证时,它们看起来很好,但我没有看到关于如何从自定义授权服务器管理客户机(即管理领域)的提示。

    因此,我认为我应该使用管理API。我是正确的吗?这是好的练习吗?我没有看到这样的适配器,所以我想我应该使用REST API。

    我也在想,我们应该如何在设计中整合我们的用户?它们应该在钥匙斗篷内复制吗?在这种情况下,我们应该使用KeyCloak的管理API从授权服务器推送数据,还是有更好的方法?

    2。我主要关注Spring Security OAuth提供的示例应用程序

共有1个答案

邬楚青
2023-03-14

用Keycloak构建Java OAuth2.0授权服务器

这是可能的,但有点棘手,有很多东西需要定制。

你可以从下面的回购中得到一些动力。

https://github.com/mitreid-connect/openid-connect-java-spring-server

MITREid Connect使用Spring Security进行身份验证,因此您可以将您喜欢的任何组件放入该空间。关于如何为自定义身份验证机制编写和配置Spring Security过滤器,web上有很多很好的资源。

您需要查看user-context.xml文件,以了解定义用户身份验证的位置。在核心项目中,这是针对本地数据库的一个简单的用户名/密码字段。在LDAP覆盖项目等其他项目中,它连接到LDAP服务器。在某些系统中,比如MIT的“oidc.mit.edu”服务器,实际上有几种不同的身份验证机制可以并行使用:LDAP、kerberos和证书。

 类似资料:
  • 我有以下场景:一个客户端应用程序试图访问API网关后面的APIendpoint。我想验证(使用id和秘密)应用程序,如果它是应用程序A允许它访问endpoint/信用,如果它是应用程序B允许它访问endpoint/借方。 我假设API网关应该验证一个调用是否应该被拒绝。你能告诉我我的工作流应该是什么样子,我应该使用什么Keycloak功能吗?

  • 我在下面设置Spring配置: 和Maven设置如下:

  • http://${host}:${port}/auth/realms/${realm_name}/authz/protection/resource_set 但是我没有看到一个API来CRUD授权策略和权限。 我试图通过protection/resource_setendpoint创建策略,但失败了:

  • null null 使用NodePort服务公开Keycloak。 应用程序使用istio入口网关公开。 Keycloak服务器版本:9.0.0。

  • 尝试使用 Spring 授权服务器实现 OAuth2 协议。使用以下配置创建了一个简单的应用程序。 调用以下endpoint时: 我得到这些: 我正在尝试通过身份验证并尝试遵循此文档。我尝试了多个电话,其中之一是: 我大部分时间都是带着不同的信息返回401。我真的想不出在哪里可以找到一些带有示例的文档,因为我能够找到的示例对我的用例没有什么帮助。我不完全理解如果客户端是前端应用程序,我将如何验证和

  • 现在,我了解了访问令牌和刷新令牌,但我不知道如何实现它。 我有一个项目,前端是棱角分明的,后端是node.js的,前面有微服务架构和网关。我可以使用像oaust2授权服务器一样的aust0,用户存储在里面? 怎么做?在aust0文档中有大量的说明,我不明白哪个适合我。 我必须通过网关拦截登录、注销和注册,并重定向到auth0,或者我必须在我的用户微服务内部完成这些操作? 在我的项目中,还有个人信息