【发布时间】:2020-11-05 06:43:57
【问题描述】:
我正在尝试在 Angular 9 中构建前端应用程序,并在 Spring Boot 中构建后端。
使用 keycloak 对用户进行身份验证和授权。
我在 keycloak 上创建了 2 个客户端,一个具有公共访问类型的前端和一个仅承载后端。
使用本教程https://www.npmjs.com/package/keycloak-angular配置角度应用程序
spring boot 应用配置了这个application.properties
spring.profiles.active=development
server.port=9000
keycloak.enabled = true
keycloak.realm = test-realm
keycloak.auth-server-url = http://localhost:8080/auth/
keycloak.ssl-required = external
keycloak.resource = backend
keycloak.credentials.secret = 5353e8ee-80b5-4c2b-b543-c08247475868
keycloak.use-resource-role-mappings = true
keycloak.bearer-only = true
keycloak.cors = true
keycloak.securityConstraints[0].securityCollections[0].name = protected resource
keycloak.securityConstraints[0].authRoles[0] = user
keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /products
keycloak.securityConstraints[0].securityCollections[0].patterns[1] = /products/
当我尝试从 Angular 应用程序发布 /products 时,我得到了
看了各种例子我尝试用这种方式修改springboot的application.properties文件
spring.profiles.active=development
server.port=9000
keycloak.enabled = true
keycloak.realm = test-realm
keycloak.auth-server-url = http://localhost:8080/auth/
keycloak.ssl-required = external
keycloak.resource = frontend
keycloak.bearer-only = true
keycloak.public-client=true
keycloak.cors = true
keycloak.securityConstraints[0].securityCollections[0].name = protected resource
keycloak.securityConstraints[0].authRoles[0] = user
keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /products
keycloak.securityConstraints[0].securityCollections[0].patterns[1] = /products/
并且有效,但据我了解,最正确的方法是在 keycloak 上为前端和后端设置 2 个单独的客户端。
我哪里错了,为什么会出现 CROS 错误??? 我在 Angular 应用程序上检查了这部分,但没问题https://www.npmjs.com/package/keycloak-angular#client-configuration
我认为问题是 Angular 上的配置不正确,但我不知道是什么。
【问题讨论】:
标签: angular spring-boot keycloak