Spring

json에 대한 기본 인증을 어떻게 추가 할 수 있습니까?

기록만이살길 2021. 3. 19. 08:03
반응형

json에 대한 기본 인증을 어떻게 추가 할 수 있습니까?

1. 질문(문제점):

내가 작업중인 응용 프로그램에는 이미 사용자 인증이 있습니다 (데스크톱 응용 프로그램). 타사가 json 형식으로 데이터를받을 수 있도록 url /teachers.htm 에 기본 인증을 추가해야 합니다. 어떻게 할 수 있습니까? 아, 스프링 부트를 사용할 수 없습니다.

security.xml

<security:authentication-manager>
    <security:authentication-provider ref="customAuthProvider">
    </security:authentication-provider>
</security:authentication-manager>

<security:http use-expressions="true" create-session="always">
    <security:expression-handler ref="customExpressionHandler" />
    <security:intercept-url pattern="/**" access="isAuthenticatedIfRequired()" />
    <security:form-login login-page="/login" default-target-url="/index.htm" username-parameter="login" always-use-default-target="true"
            password-parameter="password" authentication-failure-url="/login" />
    <security:logout invalidate-session="true" logout-success-url="/login" logout-url="/logout.htm" />
    <security:session-management session-authentication-strategy-ref="customAuthenticationStrategy" />
</security:http>

CustomAuthenticationProvider

@Override
@Transactional(readOnly = true)
public Authentication authenticate(Authentication authentication) throws AuthenticationException
{
    UserInfo user = userDao.findUserByLogin((String) authentication.getPrincipal());
    WebAuthenticationDetails details = (WebAuthenticationDetails) authentication.getDetails();
    sessionsInfo.addLoggedInUser(details.getSessionId(), user);
    return new TRUsernamePasswordAuthenticationToken(user.getId(), user.getLoginName(),
        user.getName(), user.getUserType(), user.getUserLanguage(), null, authorities,
        organizations, user.getCurrentOrganizationId());
}

2. 해결방안:

그것에 대한 특별한 태그가 http-basic있습니다.

귀하의 경우는 다음과 같습니다.

<security:http use-expressions="true">
    <security:intercept-url pattern="/teachers.htm" access="isAuthenticated()" />
    <security:http-basic />
</security:http>
65666265
반응형