首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyCloak - Javascript & Spring boot应用程序

KeyCloak - Javascript & Spring boot应用程序
EN

Stack Overflow用户
提问于 2015-05-20 16:22:19
回答 1查看 1.6K关注 0票数 1

我已经安装并配置了keycloak服务器。我的应用程序由部署在apache HTTP服务器上的单个html页面组成,该服务器与keycloak服务器在同一台机器上。此HTML页面执行REST json ajax调用来获取数据。HTML页面使用JS适配器进行保护,rest服务使用spring boot应用程序进行公开,并使用spring boot适配器进行保护。

Keycloak只有一个客户端,并为其配置了客户端适配器。

现在,js适配器可以完美地工作在文件中。它重定向到登录页面,登录后,它重定向到所需的页面。Spring boot适配器也工作正常。当我们对web服务执行GET时,它将重定向到登录页面,并且在输入凭据之后,web服务将提供响应。

问题是,当HTML页面使用AJAX调用此web服务时,它会失败。

因此,当我在key cloak服务器中输入凭据并重定向到html页面时,html页面无法进行ajax调用。响应码是302,它被重定向到keycloak auth服务(在ajax调用期间)。

我的问题是:

*如果我的html页面和just风格的web服务使用同一个keycloak客户端,我不需要登录一次吗?*如果(html和webservice )都是单独认证的,并且都是工作文件,那么为什么我只登录到html页面就不能工作了?

*有没有不同的方法来克服这个问题?

EN

回答 1

Stack Overflow用户

发布于 2015-05-22 12:58:18

解决方案非常简单。我不得不使用jsonp而不是json ajax请求。

我在ajax调用中添加了dataType:" jsonp“,并使用Spring4建议在服务器端支持jsonp。

建议代码:

代码语言:javascript
复制
@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
    super("callback");
    }
}

Javascript代码:

代码语言:javascript
复制
$(document).ready(function() {
$.ajax({
    url: "http://localhost:8081/hello-world/",
    dataType:"jsonp"
}).then(function(data) {
   $('.greeting-id').append(data.id);
   $('.greeting-content').append(data.content);
});

});

关注Link对我帮助很大:

Why is jquery's .ajax() method not sending my session cookie?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30344113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档