我想针对当前使用keycloak OIDC承载(两个属于同一领域的应用)保护的节点js验证遗留的java(6)应用程序。
我被告知要使用keycloak-authz-client库来解析keycloak OIDC JSON,如下所示
{
"realm": "xxx",
"realm-public-key": "fnzejhbfbhafbazhfzafazbfgeuizrgyez...",
"bearer-only": true,
"auth-server-url": "http://xxx:80/auth",
"ssl-required": "external",
"resource": "resourceName"
}
但是,keycloak java客户端需要java 8,而我当前的运行时是jre6。重新编译包含传递依赖的lib并不是一个好主意,我最终使用keycloak oauth2 REST端点。
据我所知oauth2我会使用client_credentials流程在应用程序初始化时对access_token交换客户机密码,并在过期时刷新/更新。
来到keycloak文档:
访问类型
这定义了OIDC客户端的类型。
机密
机密访问类型适用于需要执行浏览器登录并在转动时需要客户端密钥的服务器端客户端 将代码访问到访问令牌中(请参阅中的访问令牌请求) OAuth 2.0规范了解更多详情)。应该使用此类型 服务器端应用程序。公共
公共访问类型适用于需要执行浏览器登录的客户端客户端。使用客户端应用程序无法实现 保守秘密。相反,限制访问非常重要 为客户端配置正确的重定向URI。承载仅
仅承载访问类型意味着应用程序仅允许承载令牌请求。如果启用此功能,则此应用程序不能 参与浏览器登录。
似乎confidential
访问类型是适合我需要的类型(应该用于服务器端应用程序)但是我不知道它与浏览器登录的关系(我的想法与使用第三方身份提供商作为facebook和co进行身份验证有关)。
confidential
客户端设置还需要在成功登录或延迟后浏览器重定向到的有效重定向uri。由于我想验证的客户端是一个应用程序,我不明白这一点。
一般来说,我没有获得整个访问类型的东西。它是否仅与客户端或资源所有者相关(我的node.js应用程序是否仅限于承载,因为现有客户端使用此访问类型?它是否接受使用client_credentials流获取的access_token的承载认证?我想它会)。
有人可以澄清keycloak OIDC访问类型以及我出错的地方吗?
使用keycloak将旧版应用程序的访问权委托给另一个应用程序的某些资源(不限于特定用户)的正确方法是什么?