forked from solid-connection/solid-connect-server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTokenAuthenticationProvider.java
More file actions
33 lines (27 loc) · 1.37 KB
/
TokenAuthenticationProvider.java
File metadata and controls
33 lines (27 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.example.solidconnection.security.authentication;
import com.example.solidconnection.auth.service.TokenProvider;
import com.example.solidconnection.security.userdetails.SiteUserDetails;
import com.example.solidconnection.security.userdetails.SiteUserDetailsService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class TokenAuthenticationProvider implements AuthenticationProvider {
private final SiteUserDetailsService siteUserDetailsService;
private final TokenProvider tokenProvider;
@Override
public Authentication authenticate(Authentication auth) throws AuthenticationException {
TokenAuthentication tokenAuth = (TokenAuthentication) auth;
String token = tokenAuth.getToken();
String username = tokenProvider.parseSubject(token);
SiteUserDetails userDetails = (SiteUserDetails) siteUserDetailsService.loadUserByUsername(username);
return new TokenAuthentication(token, userDetails);
}
@Override
public boolean supports(Class<?> authentication) {
return TokenAuthentication.class.isAssignableFrom(authentication);
}
}