Я пытаюсь использовать плагин Shiro-Oauth 0.3 со следующей настройкой. Config:Плагин Shiro-Oauth
oauth {
providers {
google {
api = org.scribe.builder.api.GoogleApi
key = 'key'
secret = 'secret'
scope = 'https://www.googleapis.com/auth/userinfo.email'
callback = "${grails.serverURL}/oauth/google/callback"
successUri = '/oauth/success?provider=google'
failureUri = '/oauth/failure'
}
}
debug = true
}
security.shiro.oauth.linkAccountUrl = "/oauth/linkaccount"
Сложение конфигурации:
repositories {
mavenRepo "http://repo.desirableobjects.co.uk/"
}
plugins {
compile (":shiro:1.2.0") {
excludes "servlet-api"
}
compile ":shiro-oauth:0.3"
}
При запуске проекта я получаю следующее:
Настройка Широ ...
| Error 2014-01-14 17:49:04,233 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error initializing the application: Error creating bean with name 'uk.co.desirableobjects.oauth.scribe.OauthController': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oauthService': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [uk.co.desirableobjects.oauth.scribe.OauthService]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Callback must be a valid URL or 'oob'
Message: Error creating bean with name 'uk.co.desirableobjects.oauth.scribe.OauthController': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oauthService': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [uk.co.desirableobjects.oauth.scribe.OauthService]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Callback must be a valid URL or 'oob'
Line | Method
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 138 | run in java.util.concurrent.FutureTask
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 918 | run in ''
^ 695 | run . . in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'oauthService': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [uk.co.desirableobjects.oauth.scribe.OauthService]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Callback must be a valid URL or 'oob'
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 138 | run in java.util.concurrent.FutureTask
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 918 | run in ''
^ 695 | run . . in java.lang.Thread
Caused by BeanInstantiationException: Could not instantiate bean class [uk.co.desirableobjects.oauth.scribe.OauthService]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Callback must be a valid URL or 'oob'
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 138 | run in java.util.concurrent.FutureTask
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 918 | run in ''
^ 695 | run . . in java.lang.Thread
Caused by IllegalArgumentException: Callback must be a valid URL or 'oob'
->> 80 | check in org.scribe.utils.Preconditions
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 66 | checkValidOAuthCallback in ''
| 87 | callback in org.scribe.builder.ServiceBuilder
| 84 | doCall in uk.co.desirableobjects.oauth.scribe.OauthService$_buildService_closure1
| 66 | buildService in uk.co.desirableobjects.oauth.scribe.OauthService
| 43 | <init> in ''
| 303 | innerRun in java.util.concurrent.FutureTask$Sync
| 138 | run in java.util.concurrent.FutureTask
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 918 | run in ''
^ 695 | run . . in java.lang.Thread
| Error Forked Grails VM exited with error
Кто-нибудь какие-либо идеи по почему это вызвано?
Благодаря Берт. Установка grails.serverURL вернула работу. Сиро все еще, кажется, доминирует прямо сейчас. Я не могу войти через Google, пока я не вхожу в систему через Сиро. Какие-либо предложения? – richari1987
Извините, я не использовал Shiro много, в основном Spring Security. Вы можете попробовать список рассылки пользователей Grails, я предполагаю, что там будут люди, которые использовали Shiro + OAuth –
@ richari1987 - вам нужно реализовать действие linkAccount в вашем приложении и настроить security.shiro.oauth.linkAccountUrl, чтобы указать на это действие, в этом действии, вам нужно создать новую пользовательскую запись и аутентифицировать ее, а затем переслать в ссылку действие «Аккаунт» контроллера shiroOAuth. Все это упоминается в документах здесь http://pledbrook.github.io/grails-shiro-oauth/guide/introduction.html –