第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 Firebase Auth 在 Spring 中對(duì) API 請(qǐng)求進(jìn)行身份驗(yàn)證

使用 Firebase Auth 在 Spring 中對(duì) API 請(qǐng)求進(jìn)行身份驗(yàn)證

慕萊塢森 2023-06-28 15:32:34
我已經(jīng)使用 Firebase 身份驗(yàn)證令牌 (JWT) 驗(yàn)證對(duì) API 的訪問(wèn)權(quán)限,該令牌作為承載令牌在 Http 授權(quán)標(biāo)頭內(nèi)傳遞。使用自動(dòng)配置可以很好地工作?,F(xiàn)在我想從身份驗(yàn)證映射到數(shù)據(jù)庫(kù)中的用戶(hù)記錄。我需要如何調(diào)整安全過(guò)濾器鏈?此配置由 spring boot 根據(jù)文檔自動(dòng)應(yīng)用,并且可以被覆蓋:@Overrideprotected void configure(HttpSecurity http) throws Exception {    http            .authorizeRequests().anyRequest().authenticated()            .and().oauth2ResourceServer().jwt();}我正在使用 Firebase 身份驗(yàn)證 UI 插入解決方案,該解決方案在成功身份驗(yàn)證時(shí)提供訪問(wèn)令牌。然后這個(gè)令牌被傳遞到我的 API。
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

您可能需要做一些事情:

  1. 編寫(xiě)一個(gè)安全過(guò)濾器來(lái)調(diào)用 FirebaseAuth 對(duì) Bearer Token 進(jìn)行身份驗(yàn)證。令牌經(jīng)過(guò)身份驗(yàn)證后,將其放入 SecurityContext 中。類(lèi)似于:

public class FirebaseFilter extends OncePerRequestFilter {


    private static String AUTH_HEADER = "Authorization";


    @Override

    protected void doFilterInternal(HttpServletRequest request,

                                    HttpServletResponse response,

                                    FilterChain filterChain) throws ServletException, IOException {


        String authToken = request.getHeader(AUTH_HEADER).substring(7);

        if (!StringUtils.isEmpty(authToken)) {

            Authentication auth = getAuthentication(authToken);

            SecurityContextHolder.getContext().setAuthentication(auth);

            logger.debug("Successfully Authenticated");

        }

        filterChain.doFilter(request, response);


    }


    private FirebaseToken verifyIdToken(String idToken) {

        if (StringUtils.isEmpty(idToken)) {

            throw new IllegalArgumentException("idToken is blank");

        }

        return FirebaseAuth.getInstance().verifyIdToken(idToken);

    }


    private Authentication getAuthentication(String idToken) {


        FirebaseToken token = verifyIdToken(idToken);

        assert token != null;

        return new FirebaseAuthenticationToken(token.getUid(), token);

    }

}

您將需要 UserDetailsService 的實(shí)現(xiàn),我相信您已經(jīng)有了。


您將需要一個(gè)安全提供程序,它從安全上下文中獲取身份驗(yàn)證,然后調(diào)用 UserDetailsService 來(lái)獲取應(yīng)用程序可能需要的任何信息。然后更新認(rèn)證對(duì)象。類(lèi)似于:


@Component

public class FirebaseAuthenticationProvider implements AuthenticationProvider {


    private UserService userService;


    @Autowired

    public FirebaseAuthenticationProvider(UserService userService) {

        this.userService = userService;

    }


    public Authentication authenticate(Authentication authentication) throws AuthenticationException {

        if (!supports(authentication.getClass())) {

            return null;

        }


        UserDetails details = userService.loadUserByUsername(authentication.getPrincipal()

                                                                           .toString());

        FirebaseToken token = (FirebaseToken) authentication.getCredentials();

        if (details == null) {


            details = userService.registerUser(token);

        }


        return new FirebaseAuthenticationToken(details, token, details.getAuthorities());

    }


    public boolean supports(Class<?> authentication) {

        return (FirebaseAuthenticationToken.class.isAssignableFrom(authentication));

    }


}


查看完整回答
反對(duì) 回復(fù) 2023-06-28
  • 1 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)