私は3つのサーバー、UI(またはクライアント)、リソースサーバーと認証サーバーを実行しています。すべてのことは、リソースサーバーからクライアントに情報を取得することを除いて、完全に機能します。郵便配達員やその他のレストサービスプログラムを使用する場合は、認証サーバーからトークンを取得し、トークンを使用してリサーチサーバーから情報を取得します。春の起動時にクライアントサーバーからリソースサーバーのテキストを取得する方法
はライトがオフになっている。今私は、私のクライアントのサーバーにアクセスしてください私は私がログイン認証サーバにリダイレクト認証されておりませんならば、それはクライアントサーバーに戻って私を置き、それはのような単純なラインが表示されます
しかし、私はそれが要求とトークンを取得しないことを意味すると仮定されている404ヌルエラーを取得します。
{「ライト」:「ライトが消灯している」}すべてのヘルプは、リソースサーバからの情報とを取得する方法で評価されて
私のリソースサーバで
はシンプルなラインでありますトークンが添付されています。
マイリソースサーバコード:
LightBoot.java
@RestController public class LightsBoot {
private static final String lights = "lights are %s";
@RequestMapping(value = "/lights")
public Lights greeting(@RequestParam(value = "name", defaultValue = "off") String name) {
return new Lights(String.format(lights, name));
} }
と私のクライアントコード:私のクライアントアプリの
auth-server: http://localhost:8081/authserver
resource-server: http://localhost:8082/resource
endpoint:
lights: http://localhost:8082/resource/lights
server:
port: 8080
security:
basic:
enabled: false
oauth2:
client:
client-id: user
client-secret: user-secret
access-token-uri: ${auth-server}/oauth/token
user-authorization-uri: ${auth-server}/oauth/authorize
scope: USER
authorized-grant-types: authorization_code
resource:
token-info-uri: ${auth-server}/oauth/check_token
logging:
level:
org.springframework.security: DEBUG
EDIT1 コンソール出力:
@SpringBootApplication public class ClientApplication {
public static void main(String[] args) {
SpringApplication.run(ClientApplication.class, args);
}
@Bean
OAuth2RestTemplate oAuth2RestTemplate(OAuth2ClientContext clientContext, OAuth2ProtectedResourceDetails details) {
return new OAuth2RestTemplate(details, clientContext);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
} }
@RestController public class NewController {
private RestTemplate restTemplate;
@Value("${endpoint.lights}")
private String lights;
@Autowired
public NewController(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public GetLights newLight() {
return restTemplate.getForObject(lights, GetLights.class);
}
@RequestMapping(value = "/")
public String lights() {
return newLight() + " <--- here should be value of lights";
}
}
クライアントのプロパティは次のように見えます
Redirecting to 'http://localhost:8081/authserver/oauth/authorize?client_id=jan&redirect_uri=http://localhost:8080/login&response_type=code&scope=USER&state=qJE3Rp'
Retrieving token from http://localhost:8081/authserver/oauth/token
2017-08-10 14:47:48.898 DEBUG 17560 --- [nio-8080-exec-2] g.c.AuthorizationCodeAccessTokenProvider : Encoding and sending form: {grant_type=[authorization_code], code=[0zeUdq], redirect_uri=[http://localhost:8080/login]}
2017-08-10 14:47:48.928 DEBUG 17560 --- [nio-8080-exec-2] s.CompositeSessionAuthenticationStrategy : Delegating to org.springframework.security.web.authentication.session.ChangeSessionIdAuthenticationStrategy[email protected]
2017-08-10 14:47:48.929 DEBUG 17560 --- [nio-8080-exec-2] s.CompositeSessionAuthenticationStrategy : Delegating to o[email protected]1dd8d6
2017-08-10 14:47:48.929 DEBUG 17560 --- [nio-8080-exec-2] uth2ClientAuthenticationProcessingFilter : Authentication success. Updating SecurityContextHolder to contain: or[email protected]e5d78cca: Principal: user; Credentials: [PROTECTED]; Authenticated: true; Details: remoteAddress=0:0:0:0:0:0:0:1, sessionId=<SESSION>, tokenType=bearertokenValue=<TOKEN>; Granted Authorities: ROLE_USER
2017-08-10 14:47:48.929 DEBUG 17560 --- [nio-8080-exec-2] RequestAwareAuthenticationSuccessHandler : Redirecting to DefaultSavedRequest Url: http://localhost:8080/
2017-08-10 14:47:48.929 DEBUG 17560 --- [nio-8080-exec-2] o.s.s.web.DefaultRedirectStrategy : Redirecting to 'http://localhost:8080/'
「クライアントサーバーに戻ってきます」と言うと、具体的にはどういう意味ですか?認証サーバーはリダイレクト応答を返しますか?もしそうなら、どこにリダイレクトされていますか?その時点で間違ったURLに送信されているようです。 – DaveyDaveDave
@DaveyDaveDave編集内容を追加して、コンソールが何を出力するかを表示しました。私のクライアントにアクセスするには、http:// localhost:8080にアクセスし、サーバを認証するためにログインしてからログインしてからhttp:// localhost:8080に戻ってください。 – Jan