用于调用受保护rest api的KeyClope javascript适配器

用于调用受保护rest api的KeyClope javascript适配器,javascript,spring,rest,keycloak,Javascript,Spring,Rest,Keycloak,我有一个纯java脚本应用程序,没有servlet或任何其他后端框架。 我创建了一个jsp文件: keydoveclienthome.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http:

我有一个纯java脚本应用程序,没有servlet或任何其他后端框架。 我创建了一个jsp文件: keydoveclienthome.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript" src="js/keycloak.js"></script>
<script type="text/javascript" src="js/jquery-3.4.1.js"></script>
<script type="text/javascript" src="js/keycloak-call.js"></script>
</head>
<body>

 <script>
        parent.postMessage(location.href, location.origin)
 </script>
 <a href="#" id="keycloakCallId">Call Protected Agent</a>
 <h1 id="results">Result:</h1>
</body>
</html>
当我从浏览器中点击重定向到keydape登录页面,成功登录时,它显示jsp内容

当我单击链接并调用部署在同一服务器上的受保护RESTAPI时。

当我点击SpringRESTAPI时,它不再要求身份验证,因为它已经通过了身份验证。 Javascript和SpringRESTAPI是部署在tomcat端口8086上的两个不同应用程序。 但是当我点击来自认证jsp页面的链接,它显示401-Unauthorized。有人能告诉我,原因可能是什么吗

KeyClope中的客户端访问类型是公共的

REST API和javscript应用程序中使用的keydape.json文件

{
  "realm": "dev",
  "auth-server-url": "http://localhost:8080/auth",
  "ssl-required": "external",
  "resource": "employee-service",
  "public-client": true,
  "verify-token-audience": true,
  "use-resource-role-mappings": true,
  "confidential-port": 0,
  "enable-cors": true
}
KeyClope客户端设置屏幕截图


在发送之前的
功能中有多条注释行。可能是您忘记取消注释了。因为正如我现在看到的,您没有在服务器上发送此令牌。我已经在授权头中取消了代码和keydape.token的注释。仍然会出现相同的401错误。我已经用keydove.json文件和keydove客户端设置更新了我的代码。@Aleksei您能检查一下吗once@Aleksei:成功了。我缺少访问群体配置。使用访问群体类型的映射器创建了客户端范围,结果如下所示
{
  "realm": "dev",
  "auth-server-url": "http://localhost:8080/auth",
  "ssl-required": "external",
  "resource": "employee-service",
  "public-client": true,
  "verify-token-audience": true,
  "use-resource-role-mappings": true,
  "confidential-port": 0,
  "enable-cors": true
}