gpt4 book ai didi

java - 如何将授权 token 从 webapp 传递到 rest 服务

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:24 24 4
gpt4 key购买 nike

我在 Jetty 中部署了一个 JS 应用程序。我通过在 jetty WebAppContext

上设置安全处理程序启用了 keycloak 安全性
WebAppContext wac = null;

String webAppPath = "/../../server/webapp/mywebapp";
wac = new WebAppContext(webAppPath, "/mywebapp");
wac.addFilter(GzipFilter.class, "/*", EnumSet.allOf(DispatcherType.class));
wac.setParentLoaderPriority(true);
context.setSecurityHandler(keycloakSecurity);

当我访问上面的 webapp url 时,flow 工作正常,系统提示我进行身份验证,身份验证成功后,我被重定向到 webapp。但是,此 webapp(ajax 调用)对服务器(也通过 keycloak 保护)进行的任何其余调用都是未经授权的 (401)。

我是否需要在 ajax 调用中显式设置授权 header 或在 WebAppContext 中启用安全处理程序就足够了并且我缺少一些配置?

(如果我直接向他们发送 token ,但不是通过上面的 webapp 自动发送 token ,则可以访问其余调用)

在 angular JS 中,我像这样使用 RestAngular:

app.factory('DesignVaultRestangular', ['Restangular', '$location', function(Restangular, $location) {
var url = baseURL;
var location = $location.search();
if (location && location.url)
url = location.url;
url = url + '/api/secured/';
return Restangular.withConfig(function(RestangularConfigurer) {
RestangularConfigurer.setBaseUrl(url);
RestangularConfigurer.setDefaultHeaders({
'Content-Type': 'application/json',
'withCredentials': true
});
});
}]);

编辑请求 header

enter image description here

最佳答案

无论您是通过 URL 还是通过 ajax 调用访问,都需要授权 header 。

您可以按照下面提到的格式将 HTTP 授权 header 与您的请求一起传递。不同的 API 和工具有不同的方式来设置 HTTP header 。

     Authorization: <authorization scheme>  < authorization parameters >

请注意,凭据是根据下行中的要求设置的。如果不需要,则需要更改它 'withCredentials': true

关于java - 如何将授权 token 从 webapp 传递到 rest 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52697854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com