2016-03-12 2 views
2

Я пытаюсь настроить этот плагин без успеха. /api/login возвращает токен. Это длиннее 32 символов.grails spring rest plugin lack_scope

authResponse:[username:root, roles:[RADIO_ADMIN], expires_in:3600, token_type:Bearer, access_token:eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NTc4MTg0MjAsInN1YiI6InJvb3QiLCJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTc1U0YlFSQ2RNMFlnV1NJUUtaRW9vSUYwMFZraXBTc0RBWUVPRThWeFE2UkU2N3Zoc3JDM2UrenVnZDBnVjFCUWdDQklrZmdGXC9nU2FmRUNVRkdtcGFaazlNR2ZTb0d5MU5cL1B1dlRkdjl2SUdobzJHZDdGbVhCZ1wvRlZuTXBXOVN6V1ZzTU13MHQxMFwvTTZnanREbGlPUWUycUFMM3h5dUJGMENKUnhaZUJsdHNsMVVGazNGMXZiMkZvYTExTk13cEhUOHdibXFXNEo3UzJcLzRqZDZnMFBoRW9xTDJURW94c3dBUUxRNVZKMjFEeWZTZmxHcU1OR0M5cWdRcTNYZWxWU0IyVWxqTmhCcUVqS0ZsYllCUkFoV1gybXlKVmpzYkNpM3V6bWVXaTJrUmJDMkEwWmNhUXUzOG1hVnBuM2ZXZFRVa1Q3TUErbER1cFI0ZXllK09ndnVQeEY1UVFORFZYMHN5MlpLSWl2c21kT1BIM3BrNVwvSGxcLzBXaVVBeXVUdDhcLzhVOWNsNTZGMTl1WjNPZ1wvWkNDNjhIckJld1dpY2xOeE1GOHllTlR2blhqdzluNXplSG40ZEkyU0dXXC9uOGZzXC9XSDVMb0xLa21aWmxZTjdJaG85OHJ1VHVUeno1UDN0OUQxbXp4SkJkS0xraGFqUjRtQ21NWXRheVg2ZVZ1b2ZLd3ZycXhcL3JTK3VyVFRjTjNXVkpkV3hmR2kzTFQ5UXRLdWp2eWZYeHpPXC9pV0VWaG5lWnlKQXlIeTlBalN4cG96NjRQSitxZlA5emxFXC9RZjgxM01OWjJpaEVEQUFBPSIsInJvbGVzIjpbIlJBRElPX0FETUlOIl0sImlhdCI6MTQ1NzgxNDgyMH0.LrsAlhZ_bbWC1TKqHKCfeL0l9nZfgd_fMcsUb4Np24M] 

Но если я пытаюсь вызвать обеспеченную конечную точку, как/API/радио Я всегда получал:

[message:Access is denied, timestamp:1457814018972, error:Forbidden, status:403, path:/api/radios] 
[Server:[Apache-Coyote/1.1], WWW-Authenticate:[Bearer error="insufficient_scope"], Set-Cookie:[JSESSIONID=2AD3EF86B6BB1807747EBCCA98FB7DC8; Path=/; HttpOnly...] 

Я настроил

grails.plugin.springsecurity.controllerAnnotations.staticRules = [ 
    [pattern: '/',    access: ['permitAll']], 
    [pattern: '/error',   access: ['permitAll']], 
    [pattern: '/index',   access: ['permitAll']], 
    [pattern: '/index.gsp',  access: ['permitAll']], 
    [pattern: '/shutdown',  access: ['permitAll']], 
    [pattern: '/assets/**',  access: ['permitAll']], 
    [pattern: '/**/js/**',  access: ['permitAll']], 
    [pattern: '/**/css/**',  access: ['permitAll']], 
    [pattern: '/**/images/**', access: ['permitAll']], 
    [pattern: '/**/favicon.ico', access: ['permitAll']], 
    [pattern: '/api/**',   access: ['permitAll']], 
    [pattern: '/api/radios/**', access: ['RADIO_ADMIN']] 
] 

grails.plugin.springsecurity.filterChain.chainMap = [ 
    // State less chain 
    [ 
      pattern: '/api/**', 
      filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter' 
    ], 
    [pattern: '/assets/**',  filters: 'none'], 
    [pattern: '/**/js/**',  filters: 'none'], 
    [pattern: '/**/css/**',  filters: 'none'], 
    [pattern: '/**/images/**', filters: 'none'], 
    [pattern: '/**/favicon.ico', filters: 'none'], 
    [pattern: '/**',    filters: 'JOINED_FILTERS'] 
] 

Я использую следующий окр : Grails Версия: 3.1.3 Groovy Версия: 2.4.6 JVM Версия: 1.7.0_75

ответ

1

Я столкнулся с такой же проблемой. После нескольких часов расследования, глядя на оба грааля пружинный сердечник и весна-безопасность-отдых плагин исходный код и запуск приложения с уровнем журнала, установленным в DEBUG, чтобы увидеть все под действием покрытия, я понял это из.

Попробуйте следующее application.groovy:

grails.plugin.springsecurity.securityConfigType = "InterceptUrlMap" 

grails.plugin.springsecurity.interceptUrlMap = [ 
    [pattern: '/api/radios/**', access: ['ROLE_RADIO_ADMIN']] 
] 

Я попытался с Grails 3.1.6, весной-безопасностью-ядро 3.1.0, весна-безопасность-отдых & весны-безопасностью латентного gorm 2.0.0.M2 и Java 1.8

+0

Что вы пытаетесь предложить, вы назвали свою роль «ROLE_RADIO_ADMIN»? – themathmagician

+0

Оба, установите securityConfigType и добавьте свою роль в ROLE_ –

+0

Моя роль называется ROLE_ADMIN, но это не решает проблему. Моя настройка немного отличается, я пытаюсь использовать filterchain и @Secured аннотацию: – themathmagician

Смежные вопросы