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

Vaadin Spring Security能否仅充当oAuth2用户代理而不是客户端?

彭鹭洋
2023-03-14

我已经准备好用spring security和多个资源服务器编写一个客户端应用程序。Vaadin应用程序是否可能仅充当用户代理?一、 e.有一个java应用程序服务于Vaadin前端,但将登录请求传递给另一个使用spring security(或任何其他与oauth2兼容的程序)的java编写的客户端应用程序吗?我认为读到这是有利的分离前端和后端。到目前为止,我只找到了将java vaadin应用程序配置为客户端应用程序的教程。一、 e.在application.yaml中类似这样的内容

spring:
   security:
      oauth2:
        client:
           registration:
              keycloak:
                client-id: 
                client-secret: 
                authorization-grant-type: authorization_code
                redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
                scope: 
        provider:
          keycloak:
             issuerUri: 

和这样的安全配置

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

   @Override
   public void configure(HttpSecurity http) throws Exception {
      http
            .authorizeRequests()
            .antMatchers("/index.html", "/", "/login").permitAll()
            .anyRequest().authenticated()
            .and()
            .oauth2Client()
            .and()
            .oauth2Login();
   }
}

或者:资源服务器是否可以向另一个资源服务器发出API请求?一、 e.配置可以发出授权rest请求的web客户端/oauth2Client实例?

共有1个答案

张翰音
2023-03-14

如果您试图从独立代码库和独立部署的本质上将UI与后端分开,以实现巨大的集群和负载平衡目的,您可以考虑使用微服务架构。

在微服务架构中,每个服务(包括OAuth服务,可能还有UI本身)都在服务注册表中注册自己,因此其他服务可以通过该注册表找到并调用彼此。这是一个非常抽象的解释,用于实现此类架构,您应该深入了解细节。

如此多的应用程序永远不会达到需要将UI与后端分离的程度,这种分离带来的好处可能不值得解决它带来的其他问题。

无论如何,Vaadin Fusion最近作为纯Java版本(或Java超文本标记语言模板版本)的替代品推出,通过Typecript和超文本标记语言创建UI应用html" target="_blank">程序。所以UI完全驻留在浏览器上,有点类似于Vue、Angular和React。

尽管Vaadin Fusion的设计方式可以自动连接到同一项目中的后端服务,但我相信您可以通过应用一些调整来调用其他后端服务(例如OAuth或您现有的java应用程序)来做您想做的事情。但是,您应该处理一些其他问题,例如处理CORS或用户会话等(这也是您使用其他前端框架和库时存在的问题)。

你可以在这里了解更多关于瓦丁融合的信息。为了快速入门,你可能还想看这个短视频。

 类似资料:
  • 我将RVM用于我的Ruby安装。 任何帮助都将不胜感激。 谢谢你所有贴心的回答。

  • 但是当我运行我的应用程序“http://localhost/client-sample/product/1”时,它会显示“http://localhost/client-sample/spring_security_login”。但是我希望用户应该重定向到oaut2服务器页面。

  • 我有一个安全的微服务正在调用另一个安全的微服务。这两个服务在KeyCloak中都有服务帐户。我如何配置第一个服务在调用第二个服务时自动从keycloak获得访问令牌?这是一个简单的服务到服务通信。Quarkus Rest客户机是否有API来执行此操作?如果没有,我如何使用Vert.x rest客户端来实现这一点?

  • 我的编程任务要求我在客户端和服务器之间创建一个代理。我的客户端通过代理向服务器发出请求,然后代理将其转发并将服务器的响应返回给客户端。 以下是我采取的步骤: 1) 从客户端获取请求并将请求数据存储到字节数组中 2) 使用缓冲读取器读取字节数组 3) 从host:header字段获取主机名,并使用它创建一个serverSocket 4) 将请求数据转发到serverSocket outputstre

  •  说明 调用方法: $.f2e.util.yy.isInstallYY(fn); 函数说明: UDB登陆 参数说明: 参数名 类型 说明 备注 fn function 回调函数 null为未登录YY客户端 无 脚本 <script> $.f2e.util.yy.isInstallYY(function(data){ if(data){ //有登录

  • 问题内容: 我正在使用客户端代理创建RESTEasy服务,并且到目前为止效果很好。但是,我确实注意到,在我的一些函数中,我看到的是同一行代码: 是否最好将其从函数中删除并使其成为类的成员变量以减少可能的开销?该服务将处理10000 reqs / min的负载。谢谢 问题答案: 例如,您可以将MyClass客户端指定为spring bean,并在需要时将其注入。请注意线程安全性,因为RestEasy