首页 > 解决方案 > /token 上的 Grails OAuth 提供程序 404

问题描述

嗨,我正在尝试使用 grails 中的此文档设置 OAuth 提供程序:Grails Documentation

我已经完成了所有步骤,但是当我尝试在邮递员中提出请求时,我总是找不到 404。我尝试了很多配置,也尝试了一些不同的配置filterChain.chainMap

我还有一个运行良好的 MobileController,我可以在项目中访问它。我试图复制并粘贴过滤器链过滤器以使其与 /mobile/ 上的相同但它仍然给了我一个 404,我运行了初始化脚本 (s2-init-oauth2-provider) 来制作域类

这是我对 OAuth 提供者很重要的代码:

grails-app/conf/application.groovy:

List<String> url_public = [
        '/mobile/**',
        '/oauth/token'
]

grails.plugin.springsecurity.filterChain.chainMap = [
        [pattern: '/oauth/token', filters: 'JOINED_FILTERS,-oauth2ProviderFilter,-securityContextPersistenceFilter,-logoutFilter,-authenticationProcessingFilter,-rememberMeAuthenticationFilter,-exceptionTranslationFilter'],
        [pattern: '/mobile/**',   filters: 'JOINED_FILTERS, -securityContextPersistenceFilter, -logoutFilter, -authenticationProcessingFilter, -rememberMeAuthenticationFilter, -oauth2BasicAuthenticationFilter, -exceptionTranslationFilter'],
        [pattern: '/**',          filters: 'JOINED_FILTERS, -basicAuthenticationFilter, -basicExceptionTranslationFilter, -statelessSecurityContextPersistenceFilter, -oauth2ProviderFilter, -clientCredentialsTokenEndpointFilter, -oauth2BasicAuthenticationFilter, -oauth2ExceptionTranslationFilter'],
]

grails.plugin.springsecurity.oauthProvider.clientLookup.className = 'com.app.oauth.OAuthClient'
grails.plugin.springsecurity.oauthProvider.authorizationCodeLookup.className = 'com.app.oauth.AuthorizationCode'
grails.plugin.springsecurity.oauthProvider.accessTokenLookup.className = 'com.app.oauth.AccessToken'
grails.plugin.springsecurity.oauthProvider.refreshTokenLookup.className = 'com.app.oauth.RefreshToken'

grails-app/init/Bootstrap.groovy:

new OAuthClient(
                clientId: 'client_id',
                authorizedGrantTypes: ['authorization_code', 'refresh_token', 'implicit', 'password', 'client_credentials'],
                authorities: ['ROLE_client'],
                scopes: ['read', 'write'],
        ).save(flush: true)

        println "End bootstrap.init "

标签: grailsgroovyoauthspring-security-oauth2

解决方案


解决方法是我必须从 url_public 列表中删除 url。

List<String> url_public = [
        '/mobile/**'
]

推荐阅读