Настройка XML-сервера авторизации Spring OAuth2 - PullRequest
0 голосов
/ 13 сентября 2018

Я использую внутренний сервер авторизации OAuth2 и является отдельной (скрытой) сущностью, предоставляющей сервисы токенов (получить токен, проверить токен).

Я пытаюсь защитить свой REST API с помощью этого сервера авторизации, используя безопасность Spring OAuth2, пожалуйста, найдите мой класс конфигурации и реализации XML.

Моя реализация не проверяет токен, он напрямую обращается к RestController и возвращает данные.

весна-security.xml

    <security:http pattern="/appl/rest**" use-expressions="true" auto-config="true" create-session="never" entry-point-ref="oauthAuthenticationEntryPoint" access-decision-manager-ref="accessDecisionManager">
        <security:anonymous enabled="false" />
        <security:custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" />
        <security:access-denied-handler ref="oauthAccessDeniedHandler" />
        <security:expression-handler ref="oauthWebExpressionHandler"/>
      </security:http>
        <!-- another normal entry http for apaplication -->
     <security:http use-expressions="true" auto-config="false" entry-point-ref="preAuthenticatedProcessingFilterEntryPoint" authentication-manager-ref="authenticationManager">
<!-- intercept URL configurations & pre-auth filer config -->
  <bean id="oauthAccessDeniedHandler" class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler" />

  <bean id="oauthAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint" >
        <property name="realmName" value="W3IDRealm" />
  </bean>

  <oauth:expression-handler id="oauthExpressionHandler" />

<oauth:web-expression-handler id="oauthWebExpressionHandler" />

  <bean id="tokenServices" class="com.rest.oauth.CWATokenServices" >
        <property name="checkTokenEndpointUrl" value="endpointurl"/>
        <property name="clientId" value="clientid" />
        <property name="clientSecret" value="clicnetsecret"/>
   </bean>

<oauth:resource-server id="resourceServerFilter" resource-id="W3IDRealm" token-services-ref="tokenServices" />

    <bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased">
        <constructor-arg>
            <list>
                <bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter" />
                <bean class="org.springframework.security.access.vote.RoleVoter" />
                <bean class="org.springframework.security.web.access.expression.WebExpressionVoter">
                    <property name="expressionHandler" ref="oauthWebExpressionHandler"/>
                </bean>
            </list>
        </constructor-arg>
    </bean>

CWATokenServices, я реализовал на следующем облачном примере реализации собственных ResourceServerTokenServices. Но этот loadAuthenticate не вызывается.

Cloudfactory URL: https://github.com/cloudfoundry/uaa/blob/master/server/src/main/java/org/cloudfoundry/identity/uaa/oauth/RemoteTokenServices.java

@RestController
@RequestMapping("/data")
public class RestDataController {

    @RequestMapping(value = "/query/{query}", method = RequestMethod.GET, produces = "application/json")
    public ArrayList<PlatformPart> dataJson(@PathVariable String query) {// REST
                                                                            // Endpoint.

        ArrayList<String> resultList = new ArrayList<String>();
        // DAO called

        return resultList;
    }

если я звоню http://localhost:port/appname/rest/data/query/input, я получаю действительный ответ, но это не аутентификация - не проверка токена. У меня есть точка останова на CWATokenServices (метод loadAuthenticate), и я не вхожу в нее.

Дайте мне знать, чего здесь не хватает

...