簡體   English   中英

擴展 Jhipster JWT (Spring) 單體應用程序以支持模擬

[英]Extending a Jhipster JWT (Spring) monolith application to support impersonation

我已經生成了一個使用 JWT 身份驗證的 jhipster angular/java 應用程序。

我現在想擴展應用程序以支持模擬。

我有興趣實現以下目標:

  • 管理員模擬:允許管理員用戶以任何其他用戶身份登錄

  • 授予用戶的模擬:允許已被授予模擬用戶的權限(由用戶自己授予)的另一個用戶以該其他用戶的身份登錄。

  • 審計- 記錄更改(審計功能) - 審計跟蹤必須能夠區分實際用戶和模擬用戶,並將其記錄在審計跟蹤中。

我看到 Spring 支持模擬,但我不清楚如何在我的 Jhipster 應用程序中正確實現它,因為使用了 JWT。 我不確定 Spring 路線是否適合 JHipster-JWT-Monolith 應用程序 - 我認為這不是正確的方法。

雖然關於其他各種帖子有一些不完整的信息,但經過廣泛搜索后,我無法找到可以提供明確的分步指南的帖子。 如果有人能為我做到這一點,將不勝感激。 我希望其他人也會發現這樣的答案非常有用。

提前致謝。 弗格爾

您只需要在 UserJwtController.java 中添加以下方法

@PostMapping("/authenticate-externalnodes")
    public ResponseEntity<JWTToken> authenticateExternalnodes(@Valid @RequestBody LoginVM loginVM) {
        // Get Roles for user via username
        Set<Authority> authorities = userService.getUserWithAuthoritiesByLogin(loginVM.getUsername()).get()
                .getAuthorities();
        // Create Granted Authority Rules
        Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
        for (Authority authority : authorities) {
            grantedAuthorities.add(new SimpleGrantedAuthority(authority.getName()));
        }
        UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
                loginVM.getUsername(), "", grantedAuthorities);
        Authentication authentication = authenticationToken;
        SecurityContextHolder.getContext().setAuthentication(authentication);
        boolean rememberMe = (loginVM.isRememberMe() == null) ? false : loginVM.isRememberMe();
        String jwt = tokenProvider.createToken(authentication, rememberMe);
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add(JWTFilter.AUTHORIZATION_HEADER, "Bearer " + jwt);
        return new ResponseEntity<>(new JWTToken(jwt), httpHeaders, HttpStatus.OK);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM