스프링 부트로 웹 응용 프로그램을 구축 중입니다. 게시물 요청은 XML 형식으로 데이터를 클라우드에 업로드 할 수 있도록 전화 앱에서 요청할 수 있습니다. 데이터를 푸시 할 수있는 전화는 회사 전화 번호로 등록해야합니다. API 호출을 인증하는 방법은 기업 데이터베이스에서 휴대 전화의 Android ID를 조회하는 것입니다. Android ID가있는 경우에만 데이터를 수락합니다. 아이디어는 요청 헤더에 안드로이드 ID를 삽입하는 것입니다. 이것은 일반적인 인증 방법이 아니기 때문에 Spring Security로 구현하는 방법은 무엇입니까? 아니면 스프링 보안이 필요하지 않습니다. 헤더에서 Android ID를 추출하고 데이터베이스에서 찾아보십시오. 유효한 ID가 아닌 경우 요청을 거부하십시오. 어떤 조언이 도움이 될 것입니다.스프링 부트 응용 프로그램에서 사용자 정의 된 인증을 구현하는 방법
0
A
답변
0
인증 헤더를 창의적인 방법으로 사용하지 못하도록하는 것은 아닙니다. 즉, Android 헤더를 Android 헤더에 삽입하는 것만 큼 아무 것도 없습니다. 그런 다음, 엔드 포인트에 인증을 추가하려면, 당신은 AOP 인터셉터를 사용할 수 있습니다
보호 작업 마커 인터페이스 :
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ProtectedOperation {
}
인터셉터 :
@Aspect
@Component
public class SecurityAspect {
private CorporateService corpService; // this is your custom service to check Android IDs
@Autowired
public SecurityAspect(CorporateService corpService) {
this.corpService = corpService;
}
@Around("@annotation(operation)")
public Object protectedOperationPermissionCheck(final ProceedingJoinPoint pjp, final ProtectedOperation operation) throws Throwable {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
String header = requestAttributes.getRequest().getHeader("Authorization");
String androidId = // get the ID from header - try not to use existing authorization header formats like Bearer, Negotiate etc. to avoid collision with other authentication systems
if (corpService.isAuthorized(androidId)) {
return pjp.proceed();
}
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.flushBuffer();
return null;
}
}
하면 spring-boot-starter-aop
종속성을 추가해야합니다 귀하의 pom.xml에 @Aspect
지원
EDIT : 귀하의 c에서 끝점 방법에 주석을 달려면 스프링 부트 애플리케이션에 @EnableAspectJAutoProxy
을 추가하십시오.
관련 문제
- 1. 기존 응용 프로그램에서 WebAPI의 인증을 구현하는 방법
- 2. 스프링 부트 보안으로 인증을 구현하는 방법은 무엇입니까?
- 3. 스프링 기반 Java 응용 프로그램에서 Windows 인증을 구현하는 방법은 무엇입니까?
- 4. 스프링 부트 사용자 정의 ContextLoaderListener
- 5. asp.net mvc 3 사용자 정의 인증을 구현하는 방법?
- 6. 하늘색 활성 디렉토리를 사용하여 응용 프로그램에서 인증을 구현하는 방법
- 7. SSL 인증을 구현하는 방법
- 8. Java 응용 프로그램에서 스프링 부트 클럭을 호출하십시오.
- 9. 내 응용 프로그램에서 응용 프로그램에서 구현하는 방법
- 10. 스프링 부트 응용 프로그램에서 행 행 업데이트
- 11. 사용자 정의 인증 - 스프링 부트 403 금지 된 오류
- 12. OData에서 사용자 지정 인증을 구현하는 방법
- 13. 사용자 인증을 구현하는 가장 좋은 방법
- 14. Django : 마스터 비밀번호로 사용자 정의 인증을 구현하는 방법
- 15. WebService에서 인증을 구현하는 방법
- 16. 스프링 부트 응용 프로그램에서 느린 단위 테스트
- 17. 스프링 부트 응용 프로그램에서 각도 추가
- 18. 스프링 부트 응용 프로그램에서 트랜잭션 관리자 비활성화
- 19. 사용자 정의 Hibernate Validator 스프링 부트
- 20. 사용자 정의 콩 스프링 보안을 사용할 때 이중 인증을 피하십시오.
- 21. lightswitch 응용 프로그램에서 사용자 정의 폼 인증
- 22. ServiceStack.Net을 사용하여 클라이언트 인증을 구현하는 방법
- 23. 스프링 부트 응용 프로그램에서 스프링 - restdocs 생성 컨텐츠에 액세스
- 24. 스프링 부트 응용 프로그램에서 AWS 환경 변수에 액세스하는 방법
- 25. servicestack.net에서 인증을 구현하는 방법
- 26. 스프링 부트 응용 프로그램에서 응용 프로그램 컨텍스트를로드 할 수 없습니다.
- 27. .net 코어의 여러 응용 프로그램에서 사용자 인증을 관리하는 방법
- 28. 전자 응용 프로그램에서 JQuery 및 부트 스트랩을 구현하는 방법
- 29. 스프링 부트 사용자 정의 favicon.ico가 보이지 않음
- 30. 스프링 부트 원격 쉘 사용자 정의 명령