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

标签 java ajax rest jetty keycloak

我在 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/

相关文章:

java - 为什么 Java 中 byte[] 的 Base64 编码不起作用?

java - 自签名小程序未获得完整权限

java 如果共享名称变量时遇到问题

jquery - 网页上发生 JavaScript 事件(例如 ajax 回发)后,如何刷新 Google Ad Manager 转换的广告

ajax - Controller中对AJAX进行的操作在GRAILS中获取请求

java - 用纯字母字符替换重音字符

javascript - 如何组合两个脚本

java - 为什么这个 HashMap 在 Jersey/Tomcat 中的格式不正确?

python - "ObjectId is not JSON serializable?"时如何正确jsonify Mongo DB文档

azure - Azure Cosmos DB 用户定义函数 (UDF) 中的 HTTP Rest API