我有一个简单的Spring引导应用程序(使用jhipster 5.7.2生成)。没有服务发现。只是一个简单的整体。它使用Keycloak进行身份验证。
这是我为我的应用选择的配置:
{
"generator-jhipster": {
"promptValues": {
"packageName": "com.mycompany.myapp",
"nativeLanguage": "en"
},
"jhipsterVersion": "5.7.2",
"applicationType": "monolith",
"baseName": "test",
"packageName": "com.mycompany.myapp",
"packageFolder": "com/mycompany/myapp",
"serverPort": "8080",
"authenticationType": "oauth2",
"cacheProvider": "no",
"websocket": false,
"databaseType": "sql",
"devDatabaseType": "postgresql",
"prodDatabaseType": "postgresql",
"searchEngine": false,
"messageBroker": false,
"serviceDiscoveryType": false,
"buildTool": "maven",
"enableSwaggerCodegen": false,
"clientFramework": "angularX",
"useSass": false,
"clientPackageManager": "npm",
"testFrameworks": [],
"jhiPrefix": "jhi",
"otherModules": [],
"enableTranslation": true,
"nativeLanguage": "en",
"languages": [
"en"
]
}
}
我正在使用Keycloak 4.5
我已遵循this文档,以在我的Auth Server上启用HTTPS。 现在,我的身份验证服务器可从外部访问。
我的应用程序正在localhost中运行。当我尝试执行登录时,登录失败并显示以下消息:未经授权
应用程序日志中显示以下内容:(BadCredentialsException)
2018-12-24 19:31:27.579 DEBUG 43877 --- [ XNIO-2 task-13] c.m.myapp.aop.logging.LoggingAspect : Enter: com.mycompany.myapp.repository.CustomAuditEventRepository.add() with argument[s] = [AuditEvent [timestamp=2018-12-24T14:01:27.579Z, principal=UNKNOWN, type=AUTHENTICATION_FAILURE, data={type=org.springframework.security.authentication.BadCredentialsException, message=Could not obtain access token}]]
Hibernate: select nextval ('hibernate_sequence')
Keycloak端无日志。如果我删除了我的身份验证服务器上与HTTPS相关的配置,则登录有效。不知道到底是什么问题。
答案 0 :(得分:1)
我找出了此问题的原因。
就我而言,问题出在密钥库(JKS)创建过程中。 我们只给了cert.crt和privkey.crt。 创建密钥库时不包括根证书。 docs明确要求包含根证书。
可以从证书提供者那里下载根证书。 This链接有助于包含根证书。
使用Letsencrypt颁发的证书时,我们需要做的只是使用privkey.pem和fullchain.pem。在这里,我们不必担心将根证书包含在fullchain中。pem已经包含了它。
BaseTest.driver.SwitchTo().Window(BaseTest.driver.WindowHandles[i]);