Java KeyClope用户验证和获取令牌

Java KeyClope用户验证和获取令牌,java,keycloak,keycloak-services,Java,Keycloak,Keycloak Services,首先,我对keybeave很陌生,如果我问的问题可能有误,请原谅 我已经安装了KeyClope服务器,我可以使用以下方式访问Web UI: 我的需求是通过将域用户传递给k来验证它 keydape API和从那里获取令牌作为响应,然后将此令牌传递给我的其他Web API调用 但是我找不到一个简单的指南来指导我如何做到这一点 更新: 使用来自keydape的用户界面: 到目前为止: 我能够创建一个领域: e、 g:DemoRealm 在领域下我创建了客户端: e、 g:DemoClient 在

首先,我对keybeave很陌生,如果我问的问题可能有误,请原谅

我已经安装了KeyClope服务器,我可以使用以下方式访问Web UI:

我的需求是通过将域用户传递给k来验证它 keydape API和从那里获取令牌作为响应,然后将此令牌传递给我的其他Web API调用

但是我找不到一个简单的指南来指导我如何做到这一点

更新:


使用来自
keydape
的用户界面:

到目前为止:

  • 我能够创建一个
    领域
    : e、 g:
    DemoRealm

  • 领域下
    我创建了客户端: e、 g:
    DemoClient

  • 在客户端下,我创建了用户: e、 g:
    DemoUser

使用
邮递员

我还可以使用

http://localhost:8080/auth/realms/DemoRelam/protocol/openid-connect/token

POST:
{
"grant_type": "client_credentials",
"username": "",
"password": "",
"client_secret":"",
"client_id":"DemoClient"
}
作为回应,我得到了代币

{
    "access_token": "eyJhbGciOiJSUzI1NiIsINVSHGhepnDu13SwRBL-v-y-04_6e6IJbMzreZwPI-epwdVPQe-ENhpvms2WdGM_DmgMLZ8YQFS4LDl9R7ZHT8AgXe-WCFV6OFkA7zvdeFwQ4kVVZE0HlNgHgoi4DrgMfwwz_ku1yJNJP3ztTY1nEqmA",
    "expires_in": 300,
    "refresh_expires_in": 1800,
    "refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJRRnB5YlloMGVEektIdlhOb3JvaFUxdlRvWVdjdP3vbfvk7O0zvppK9N4-oaUqZSr0smHv5LkuLDQYdPuxA",
    "token_type": "bearer",
    "not-before-policy": 0,
    "session_state": "bb1c586a-e880-4b96-ac16-30e42c0f46dc"
}
此外,我还深入了解了更多细节,发现了以下API指南:

在本指南中提到,我可以使用 Get users返回根据查询参数筛选的用户列表

GET /admin/realms/{realm}/users
但是当我使用
POSTMAN
获取用户时,我得到的是403错误代码。我传递的令牌与我在前面步骤中获得的身份验证相同

http://localhost:8080/auth/admin/realms/DemoRelam/users

有人能为我指点迷津吗?

Keyclope中的用户是特定于领域的,并非每个用户都可以访问它们。在管理仪表板中为用户分配特定角色后,您将能够通过管理API获取所有用户。干脆

  • 在管理仪表板中,转到
  • 用户>myuser>角色映射>客户端角色>领域管理

  • 为用户分配两个角色中的任意一个
    管理用户
    查看用户

  • 生成一个新令牌

  • 使用新令牌命中API

  • 您将拥有您的用户


    另外,我认为你应该更新你的问题标题,使之更相关

    您有两种选择:您可以代表某个用户(正如Adnan Khan所指出的),或者为此创建一个专用客户端

    代表用户 1) 创建一个机密客户(我想你已经有了)

    2) 创建用户并为其分配适当的角色:例如,
    领域管理
    组中的
    查看用户

    3) 获取令牌(我使用curl和):

    4) 最后调用AdminRESTAPI:

    代表客户(服务账户) 1) 创建一个机密客户端,并确保将“服务帐户启用”设置切换为“打开”

    2) 转到
    服务帐户角色选项卡
    并为此客户端选择适当的角色,例如从
    领域管理
    组中选择
    领域管理员

    3) 获取访问令牌

    KCHOST=https://yourkeycloak.com
    REALM=realm
    CLIENT_ID=protector-of-the-realm
    CLIENT_SECRET=xxxxxxx-yyyyyyyy-zzzzzzzzz
    
    ACCESS_TOKEN=`curl \
      -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" \
      -d "grant_type=client_credentials" \
      "$KCHOST/auth/realms/$REALM/protocol/openid-connect/token"  | jq -r '.access_token'`
    
    4) 调用REST API端点:

    curl -X GET -H "Authorization: Bearer $ACCESS_TOKEN" $KCHOST/auth/admin/realms/$REALM/users | jq
    
    另外,为了调试,我刚刚编写了一个名为 将帮助您获取和分析JWT令牌(范围、角色等)。它可以 适用于公共和机密客户。你也可以 使用邮递员和


    HTH:)

    你是说你刚刚安装了KeyClope,并在它未与WEB应用程序集成时运行它?如果你会看到太多的东西可以通过互联网和keydove文档获得,那么如何将keydove与web集成application@SubodhJoshi我不想将keydepeat与web应用程序集成。我将在relam下传递用户/客户端,并获取令牌,然后将此令牌传递给其他api,我将再次使用ui验证此令牌。可能无法使用KeyClope rest api或admin cli。@SubodhJoshi我已用我目前所获得的更新了我的问题。您能帮我吗?我认为这将对您有所帮助。已获得访问令牌,但不知道如何使用postman进行测试。>您应该只需要在Postman中添加authrisation标头,已经获得访问令牌,但不知道如何使用Postman进行测试。>你应该只需要在邮递员中添加授权标题,我发现了这个,看看它是否对你有帮助,否则我只能在早上写正确的答案。现在我正在使用我的手机进行通讯。这在KeyClope 12中更改了吗?我似乎找不到
    服务帐户角色
    选项卡?
    KCHOST=https://yourkeycloak.com
    REALM=realm
    CLIENT_ID=protector-of-the-realm
    CLIENT_SECRET=xxxxxxx-yyyyyyyy-zzzzzzzzz
    
    ACCESS_TOKEN=`curl \
      -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" \
      -d "grant_type=client_credentials" \
      "$KCHOST/auth/realms/$REALM/protocol/openid-connect/token"  | jq -r '.access_token'`
    
    curl -X GET -H "Authorization: Bearer $ACCESS_TOKEN" $KCHOST/auth/admin/realms/$REALM/users | jq