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 不应更改默认值。
Name | Description | Required | Default |
---|---|---|---|
spring.cloud.gcp.security.iap.registry | 链接到 JWK 公钥注册表。 | true | https://www.gstatic.com/iap/verify/public_key-jwk |
spring.cloud.gcp.security.iap.algorithm | 用于签署 JWK 令牌的加密算法。 | true | ES256 |
spring.cloud.gcp.security.iap.header | 从中提取 JWK 密钥的 Headers。 | true | x-goog-iap-jwt-assertion |
spring.cloud.gcp.security.iap.issuer | JWK 发行人进行验证。 | true | https://cloud.google.com/iap |
spring.cloud.gcp.security.iap.audience | 自定义 JWK 受众进行验证。 | 在 App Engine 上为 false;在 GCE/GKE 上为 true |