Oauth2 Spring安全资源服务器和独立Auth服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oauth2 Spring安全资源服务器和独立Auth服务器相关的知识,希望对你有一定的参考价值。

大家!我是Oauth2的新手,我有不同的方法。

我有个疑问。我实际上正在使用Spring Security构建一个提供程序服务器,并且我有一个外部访问令牌提供程序(Google和AWS Cognito)。

我知道在代码授予流程之后获取访问令牌的过程(我想要实现的那个)。我构建了一个android应用程序来获取代码并为访问令牌更改它。

我的问题是:如何使用Spring Security验证我发送给Provider Server的令牌是否有效,还可以访问服务器所拥有的受保护资源?

先感谢您。

答案

我认为有两种选择,你可以获得公钥并自己验证令牌,或者他们有一个端点,你可以发送令牌并知道它是否是有效的。

像这样的东西

GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
    // Specify the CLIENT_ID of the app that accesses the backend:
    .setAudience(Collections.singletonList(CLIENT_ID))
    // Or, if multiple clients access the backend:
    //.setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3))
    .build();

// (Receive idTokenString by HTTPS POST)

GoogleIdToken idToken = verifier.verify(idTokenString);
if (idToken != null) {
  Payload payload = idToken.getPayload();

  // Print user identifier
  String userId = payload.getSubject();
  System.out.println("User ID: " + userId);

  // Get profile information from payload
  String email = payload.getEmail();
  boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
  String name = (String) payload.get("name");
  String pictureUrl = (String) payload.get("picture");
  String locale = (String) payload.get("locale");
  String familyName = (String) payload.get("family_name");
  String givenName = (String) payload.get("given_name");

  // Use or store profile information
  // ...

} else {
  System.out.println("Invalid ID token.");
}

链接:https://developers.google.com/identity/sign-in/web/backend-auth

以上是关于Oauth2 Spring安全资源服务器和独立Auth服务器的主要内容,如果未能解决你的问题,请参考以下文章

Spring安全中的Oauth2客户端

spring boot(1.3)基于oauth2资源服务器:不能使用@PreAuthorize方法安全

Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器

Spring cloud微服务安全实战-4-6搭建OAuth2资源服务器

Spring Cloud Security[微服务安全](一)初识Spring Cloud Security和OAuth2.0

Spring Security实现OAuth2.0——资源服务