有人可以幫助解釋我缺少什么嗎?我有一個問題,卷曲
curl -i --negotiate -u : "backendService.net/kerberos:"
在 CMD 中作業正常,我能夠在我的后端服務中驗證哪個用戶呼叫了這個。但是,如果我在 postman/EDGE 或 Chrome 中嘗試這個。我什至要求前端嘗試通過對標頭做出反應來呼叫它:
WWW-Authentication:negotiate
我知道 Kerberos 驗證失敗。
我正在使用 Spring Boot 應用程式,backendService.net/kerberos上面提到的是我擁有的 RestController 的端點:
@GetMapping(value = "/kerberos")
public ResponseEntity<String> getKerberosUser(HttpServletRequest req) {
logger.info("Kerberos remote user: " req.getRemoteUser());
return new ResponseEntity<>(req.getRemoteUser(), HttpStatus.OK);
}
我有 keytab 和 SPN 設定正確,因為如果我嘗試在 cmd 中這樣呼叫:
knit -k -t my-file.keytab HTTP/backendService.net
它使用我的用戶名生成 kerberos 票證。
對我來說最奇怪的部分是為什么 CURL 可以作業但 BROWSER 或其他東西不行?歡迎任何反饋。謝謝!!!:)
更新 1.0
我發現DisableAuthNegotiateCnameLookup在 chrome 中啟用 cname 查找可以解決這個問題。是否可以通過 spring-boot 應用程式禁用它,或者我需要將此 url 添加到受信任的 uri?
uj5u.com熱心網友回復:
如果有人面臨這個問題。我通過將 DNS 名稱添加到 keytab 檔案并為同一個 DNS 創建 SPN 來解決它。問題在于 DNS 查找,因為它一直提供錯誤的域 url。這就是 kerberos 身份驗證失敗的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/448111.html
上一篇:無法卷曲包含gif網址的變數
