SecurityCheck 클래스

Published: by

SecurityCheck 클래스

ExternalizableSecurityCheck클래스의 부모 클래스다.

/**
 * 보안 검사의 서버 측 상태를 나타낸다.
 * 보안 검사는 분산 캐시에 보관되며 상태 유지이므로 영구 상태를 처리하는 것은 구현자의 책임이다.
 *
 * 작성 :  artem
 * 날짜 : 6/28/15
 */

public interface SecurityCheck extends Externalizable {

    /**
     * 구성 객체를 만들고 제공된 속성에서 필드를 채운다.
     * 오류 및 경고 맵을 사용하여 문제를 보고한다.
     * 배포 중에 호출된다.
     *
     * @param properties 병합된 속성을 읽고 유효성을 검사한다.
     * @return 새로운 설정 객체, 널이 아님
     */
    SecurityCheckConfiguration createConfiguration(Properties properties);

    /**
     * 컨텍스트 및 구성 등록 정보로 보안 점검을 초기화 한다.
     * 이 메소드느느 인스턴스화 후에 호출되며 각 검색시 호출된다.
     * 보안 검사가 구성 데이터를 영구 상태로 유지하면 안된다.
     *
     * @param name                 보안 검사의 이름
     * @param config               createConfiguration(Properties)에 의해 생성된 보안 검사 구성
     * @param authorizationContext 호출 클라이언트의 일시적인 상태에 대한 액세스를 제공
     * @param registrationContext  호출 클라이언트의 영구 상태에 대한 액세스를 제공
     */
    void setContext(String name, SecurityCheckConfiguration config, AuthorizationContext authorizationContext, RegistrationContext registrationContext);

    /**
     * 보안 체크 비활성 시간 제한, 일반적으로 구성된 값을 가져온다.
     * 0은 이 검사에 대해 정의된 비활성 시간 초과 없음을 의미한다.
     *
     * @return 비활성 시간 초과(초), 0(없는 경우)
     */
    int getInactivityTimeoutSec();

    /**
     * 보안 검사의 현재 상태의 만료를 가져온다.
     * 상태(success, failure, any other)에 대해 어떠한 가정도 하지 않는다.
     * 만기가 지나면 보안 검사 상태가 손실된다.
     *
     * @return 만료시간(밀리초)
     */
    long getExpiresAt();

    /**
     * 이 보안 검사에서 주어진 범위를 요청한다.
     * 체크 성공, 실패, 시도를 반환 할 수 있다.
     *
     * @param scope       요청 된 범위는, 범위 매핑 처리로부터 온다.
     *                    어떤 지점에서 어떤 범위를 부여해야하는지 정확히 알고있는 사용자 정의 검사의 경우를 제외하고는 일반적으로 보안 검사로 분석해서는 안된다.
     * @param credentials 클라이언트가 보낸 자격 증명 - 챌린지 응답 또는 선제적
     * @param request     클라이언트가 보낸 사전 승인 또는 등록 요청
     * @param response    이 상태가 성공, 실패, 시도를 추가하는 응답
     */
    void authorize(Set<String> scope, Map<String, Object> credentials, HttpServletRequest request, AuthorizationResponse response);

    /**
     * 현재 이 상태가 요청 된 범위를 부여하는지 확인한다.
     * 범위가 부여되면 구현은 부여 된 범위, 만료 및 사용자 정의 인트로스펙션 데이터를 응답 매개 변수에 추가해야한다.
     * 범위가 부여되지 않으면 구현이 자동으로 반환된다.
     *
     * @param scope    이 상태에 의해 부여 될 것으로 예상되는 범위
     * @param response 이 검사가 부여한 범위와 사용자 정의 인트로스펙션 데이터를 추가하는 응답
     */
    void introspect(Set<String> scope, IntrospectionResponse response);

    /**
     * 이 보안 검사에서 명시적으로 로그아웃 할 때 호출된다.
     * 구현시 영구(등록 된)상태 또는 다른 사용자 정의 논리를 수정하거나 삭제하도록 선택할 수 있다.
     * 이 보안 검사의 일시적인 상태는 자동으로 삭제된다.
     */
    void logout();
}

원본

/**
 * Represents server-side state of a security check.<br/>
 * Security checks are kept in a distributed cache, and are stateful, so it's the responsibility of the implementor
 * to handle the persistent state.
 *
 * @author artem
 *         Date: 6/28/15
 */

public interface SecurityCheck extends Externalizable {

    /**
     * Create configuration object and populate fields from the given properties.
     * Use errors and warnings maps to report problems.<br/>
     * Called during deployment.
     *
     * @param properties the merged properties to read and validate
     * @return new configuration object, not null
     */
    SecurityCheckConfiguration createConfiguration(Properties properties);

    /**
     * Initialize the security check with the context and configuration properties.
     * This method is called after instantiation and also on each retrieve.
     * The security checks should not keep the configuration data in the persistent state
     *
     * @param name                 name of the security check
     * @param config               security check configuration created by {@link #createConfiguration(Properties)}
     * @param authorizationContext provides access to the transient state of the calling client
     * @param registrationContext  provides access to the persistent state of the calling client
     */
    void setContext(String name, SecurityCheckConfiguration config, AuthorizationContext authorizationContext, RegistrationContext registrationContext);

    /**
     * Get the security check inactivity timeout, usually the configured value.
     * 0 means no inactivity timeout defined for this check
     *
     * @return inactivity timeout in seconds, 0 if none
     */
    int getInactivityTimeoutSec();

    /**
     * Get the expiration of the current state of the security check.
     * No assumption is made about the meaning of the state (success, failure, or any other).
     * After the expiration the state of the security check is lost.
     *
     * @return the time of expiration in millis
     */
    long getExpiresAt();

    /**
     * Request the given scope from this security check.
     * The check can return success, challenge, or failure
     *
     * @param scope       the requested scope, comes from the scope mapping processing.
     *                    Usually should not be analyzed by the security check, except of the case of a custom check
     *                    that knows exactly what scopes should be granted at any point.
     * @param credentials the credentials sent by the client - either as a challenge response or pre-emptively
     * @param request     the pre-authorization or registration request sent by the client
     * @param response    the response to which this check adds its success, challenge, or failure
     */
    void authorize(Set<String> scope, Map<String, Object> credentials, HttpServletRequest request, AuthorizationResponse response);

    /**
     * Make sure this check currently grants the requested scope.<br/>
     * If the scope is granted, the implementation should add the granted scope, its expiration, and custom introspection data to the response parameter.
     * If the scope is not granted, the implementation should return silently.
     *
     * @param scope    scope expected to be granted by this check
     * @param response the response to which this check adds its granted scope and custom introspection data
     */
    void introspect(Set<String> scope, IntrospectionResponse response);

    /**
     * Called upon explicit logout from this security check.
     * The implementation may choose to modify or delete its persistent (registered) state, or other custom logic.<br/>
     * The transient state of this security check is destroyed automatically.
     */
    void logout();
}