162. 云身份识别代理(IAP)身份验证

云身份识别代理(IAP)为部署到 Google Cloud 的应用程序提供了安全层。

IAP 启动程序使用Spring Security OAuth 2.0 资源服务器功能从注入代理的x-goog-iap-jwt-assertion HTTPHeaders 中自动提取用户身份。

以下声明将自动验证:

  • Issue time

  • Expiration time

  • Issuer

  • Audience

当应用程序在 App Engine Standard 或 App Engine Flexible 上运行时,将自动配置受众群体("aud")验证。对于其他运行时环境,必须通过spring.cloud.gcp.security.iap.audience属性提供自定义受众。自定义属性(如果已指定)将覆盖自动的 App Engine 受众群体检测。

Tip

Compute Engine 或 Kubernetes Engine 没有自动的受众字符串配置。要在 GCE/GKE 上使用 IAP 启动程序,请按照验证 JWT 有效负载指南中的说明查找受众字符串,然后在spring.cloud.gcp.security.iap.audience属性中指定该字符串。否则,应用程序将无法以No qualifying bean of type 'org.springframework.cloud.gcp.security.iap.AudienceProvider' available消息开头。

Note

如果创建自定义WebSecurityConfigurerAdapter,请通过向HttpSecurity对象添加.oauth2ResourceServer().jwt()配置来启用提取用户身份。如果没有自定义WebSecurityConfigurerAdapter,则不需要做任何事情,因为默认情况下 Spring Boot 将添加此自定义。

Starter Maven 坐标,使用Spring Cloud GCP BOM

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-gcp-starter-security-iap</artifactId>
</dependency>

Starter Gradle 坐标:

dependencies {
    compile group: 'org.springframework.cloud', name: 'spring-cloud-gcp-starter-security-iap'
}

162.1 Configuration

以下属性可用。

Warning

修改注册表,算法和 Headers 属性可能对测试很有用,但是在 Producing 不应更改默认值。

NameDescriptionRequiredDefault
spring.cloud.gcp.security.iap.registry链接到 JWK 公钥注册表。truehttps://www.gstatic.com/iap/verify/public_key-jwk
spring.cloud.gcp.security.iap.algorithm用于签署 JWK 令牌的加密算法。trueES256
spring.cloud.gcp.security.iap.header从中提取 JWK 密钥的 Headers。truex-goog-iap-jwt-assertion
spring.cloud.gcp.security.iap.issuerJWK 发行人进行验证。truehttps://cloud.google.com/iap
spring.cloud.gcp.security.iap.audience自定义 JWK 受众进行验证。在 App Engine 上为 false;在 GCE/GKE 上为 true

162.2 Sample

sample application可用。