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

在使用keydrope进行安全保护后,无法使用有效的keydrope令牌访问REST服务

鄢朝斑
2023-03-14

使用keydeport Java API获取有效令牌,然后使用该令牌尝试访问已使用keydeport保护但未找到404错误的rest服务。

令牌似乎不起作用?

这是我的java代码,用于从KeyClope获取令牌。这似乎有效:

AuthzClient authzClient = AuthzClient.create();
AccessTokenResponse response = authzClient.obtainAccessToken(user, password);

我在响应中得到一个有效令牌。然后,我尝试使用此令牌访问由KeyClope保护的REST服务:

    String urlString = "http://localhost:3333/appname-1.0.0-SNAPSHOT/project/0.1/device/return/all";

    URL url = new URL(urlString); 
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("GET");
    String authString = "Bearer " + tokenStr;
    con.setRequestProperty("Authorization", authString);
    basicStatus = con.getResponseCode();

basicStatus返回404

我通过添加一个web,用REST服务保护war文件。xml文件和密钥斗篷。json文件。如果我删除web。xml和密钥斗篷。来自war的json文件,则上述代码返回200。但该服务不安全。

web.xml:

<module-name>application</module-name>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Device</web-resource-name>
        <url-pattern>/device/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>device</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>KEYCLOAK</auth-method>
    <realm-name>this is ignored currently</realm-name>
</login-config>

<security-role>
    <role-name>device</role-name>
</security-role>

用户在密钥斗篷中具有设备角色。

有什么想法吗?

共有1个答案

秦昊穹
2023-03-14

我想说在任何事情之前,请从您的“http://localhost:3333/.......”资源服务器根位置URL中删除“超文本传输协议://”并重试。如果这不能解决您的问题,我建议使用类似postman的东西,这样您可以更快地测试/原型。

1-使用此endponit获取令牌(以x-www-form-urlencoded发送):主机:PORT/auth/realms/your\u REALM/protocol/openid connect/token

2个参数是:grant\u type(值:password)、client\u id、usernmae、,

3完成这项工作后,只需检查您的java客户端中是否使用了相同的值。

希望有帮助。

编辑:好的,这是11个月大的XD……没关系

 类似资料:
  • 问题内容: 该问题在某种程度上与以下链接的问题有关。但是,我需要在某些方面和一些其他信息上多一点清晰度。 我需要使用令牌为REST Web服务实现安全性 该Web服务旨在与Java客户端一起使用。因此,表单身份验证和凭据弹出窗口没有用。 我是REST安全和加密的新手 这是我到目前为止所了解的: 对于第一个请求: 用户建立https连接(或容器使用301确保https) 用户POST输入用户名和密码

  • 这个问题在某种程度上与下面的链接问题有关。然而,我需要在某些方面更多的澄清和一些额外的信息。参考:REST Web服务身份验证令牌实现 背景: null null 对于后续请求: 客户端发送此加密令牌和哈希组合(使用基本的用户名字段?) 我们使用哈希确保加密的令牌没有被篡改,然后对其解密 我们检查会话跟踪表中解密的令牌是否有未过期的条目,并获得实际的用户名(过期由代码管理?) 如果找到用户名,则根

  • 我正在使用Lusita的PHP Oauth库(https://github.com/Lusitanian/PHPoAuthLib)。 在用户在我的应用程序中获得授权后,我收到了访问令牌和访问令牌密钥的值。现在有了这些值,我想对API进行身份验证调用。如何使用Access Token、Access Token Secret以及Consumer Key和Consumer Secret的值进行调用?我不

  • 目前访问类型处于联机状态。当我需要访问驱动器上的文件/文件夹时,我将浏览器重定向到Google URL并获得访问代码: 一切运转良好!但我只需要第一次重定向。 当我谷歌时,在google Drive API文档中,我发现我可以通过浏览器重定向获得刷新令牌,并将其保存在数据库中。(换句话说,我可以使用脱机访问)。 而且每次当我需要从google drive读取数据时,我使用刷新令牌获得访问令牌,而无

  • 我无法获得足够的权限来使用我的应用程序访问Azure Key Vault(而不是通过用户登录)。以下是我的设置: 我已经给了我的名为“keyvault”的应用程序所有的许可。 我的应用程序注册了Azure Active Directory。我已经允许它进入密钥库:

  • 无法使用Azure对后端api进行身份验证。在jwt.ms中进行故障排除时,错误表示访问群体无效,但aud声明具有后端api客户端id。