2016-08-31 20 views
0

WebサービスでOAuth2を使用してAndroidアプリケーションを認証したいと思います。いくつかの研究の後、私は/ oauth /暗黙の認証を与えるエンドポイントを使用するべきであることを知っています。しかし、ログインページへのリダイレクトとログインに成功した後、サーバーはアクセストークンを返します。有効期限が切れた後、ユーザーは再度ログインする必要があります。これは私のシナリオでの問題です。古いトークンが期限切れになったときにアクセストークンを取得するために、リフレッシュトークンを使用してそれを使用できるようにしたいと考えています。このようなシナリオは、春のOAuth2を使用して可能ですか?AndroidアプリケーションのリフレッシュトークンをSpringのOAuth2ベースの認証サーバから取得する

答えて

1

AuthorizationServerConfigurationには、DefaultTokenServicesで実装されたTokenServices beanが必要です。

defaultTokenServices.setSupportRefreshToken(true); // enable refresh tokens 

クライアント構成では、必ずリフレッシュトークンのサポートを設定してください。

@Override 
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
     clients.inMemory() 
      .withClient("trusted-app") 
      .authorizedGrantTypes("password", "refresh_token") 
      .authorities("ROLE_TRUSTED_CLIENT") 
      .scopes("read", "write") 
      .resourceIds(resourceId) 
      .accessTokenValiditySeconds(accessTokenValiditySeconds) 
      .refreshTokenValiditySeconds(refreshTokenValiditySeconds) 
      .secret("secret"); 
    } 

トークンエンドポイントに要求するときは、リフレッシュトークンを含める必要があります。

/oauth/token?grant_type=password&username="+username+"&password="+password 

これはあなたに私はAndroidアプリケーションへのユーザーのログイン/パスワードを与える必要があり、あなたのシナリオでは

/oauth/token?grant_type=refresh_token&client_id=trusted-app&refresh_token="+refreshToken 
+0

トークン新しいアクセスを取得する必要があります。むしろ/ oauth/loginページにリダイレクトするエンドポイントを使用することを望みます。そうすれば、Androidアプリケーションはユーザーのログイン/パスワードを知る必要はありません。 – Cob

+0

現時点で私は何か違うものを試しています。ブラウザでこのURLを開きます:http:// localhost:8080/oauth/authorize?client_id = clientId&redirect_uri = http:// localhost:8080/redirect&response_type = code ログインページにリダイレクトされ、 。 2番目の手順は次のとおりです。 curl -X POST "clientId:secret @ localhost:8080/oauth/token&grant_type = authorization_code&code = 6Lgq01" しかし、トークンを取得する代わりに、再度ログインページにリダイレクトされます。私は何か間違っているのですか? – Cob

+0

あなたはSpring OAuth Serverを管理していますか、それともサードパーティが管理していますか?両方を所有している場合は、トークンのエンドポイントを使用する方が意味があります。 http://stackoverflow.com/a/36974132/2983312リフレッシュトークンを発行するようにクライアントを設定すると、選択したログインタイプに関係なくリフレッシュトークンが含まれます。 – blur0224

関連する問題