Spring Security Kerberos 範例

參考文件的這個部分介紹了範例專案。範例可以透過從 github.com/spring-projects/spring-security-kerberos 建置主要發行版本來手動編譯。

如果您直接執行範例,在套用正確的設定之前它將無法運作。請參閱下方特定範例的注意事項。

安全性伺服器 Windows 驗證範例 Windows 環境的範例

安全性伺服器端驗證範例 使用伺服器端驗證器的範例

安全性伺服器 Spnego 和表單驗證範例 使用票證驗證搭配 spnego 和表單的範例

安全性伺服器 Spnego 和表單驗證 Xml 範例 使用票證驗證搭配 spnego 和表單的範例 (xml 設定)

安全性用戶端 KerberosRestTemplate 範例 KerberosRestTemplate 的範例

安全性伺服器 Windows 驗證範例

此範例的目標

  • 在 Windows 環境中,使用者將能夠使用在登入 Windows 期間輸入的 Windows Active Directory 認證登入應用程式。不應要求輸入使用者 ID/密碼認證。

  • 在非 Windows 環境中,使用者將看到一個畫面,以提供 Active Directory 認證。

server:
    port: 8080
    app:
        ad-domain: EXAMPLE.ORG
        ad-server: ldap://WIN-EKBO0EQ7TS7.example.org/
        service-principal: HTTP/[email protected]
        keytab-location: /tmp/tomcat.keytab
        ldap-search-base: dc=example,dc=org
        ldap-search-filter: "(| (userPrincipalName={0}) (sAMAccountName={0}))"

在上方,您可以看到此範例的預設設定。您可以使用一般的 Spring Boot 技巧覆寫這些設定,例如使用命令列選項或自訂 application.yml 檔案。

執行伺服器。

$ java -jar sec-server-win-auth-2.1.1.jar

您可能需要搭配 Linux 使用自訂 Kerberos 設定,方法是使用 -Djava.security.krb5.conf=/path/to/krb5.iniGlobalSunJaasKerberosConfig bean。

請參閱 設定 Windows 網域控制器 以取得更多關於如何使用 Windows Kerberos 環境的指示。

使用網域認證登入 Windows 8.1 並存取範例

ie1 ie2

從非 Windows VM 存取範例應用程式,並手動使用網域認證。

ff1 ff2 ff3

安全性伺服器端驗證範例

此範例示範伺服器如何能夠使用透過表單登入傳遞的使用者認證,針對 Kerberos 環境驗證使用者。

執行伺服器。

$ java -jar sec-server-client-auth-2.1.1.jar
server:
    port: 8080

安全性伺服器 Spnego 和表單驗證範例

此範例示範如何設定伺服器以接受來自瀏覽器的 Spnego 型協商,同時仍然能夠回退到表單型驗證。

使用 user1 主體 設定 MIT Kerberos,使用認證手動執行 Kerberos 登入。

$ kinit user1
Password for [email protected]:

$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]

Valid starting     Expires            Service principal
10/03/15 17:18:45  11/03/15 03:18:45  krbtgt/[email protected]
  renew until 11/03/15 17:18:40

或使用 keytab 檔案。

$ kinit -kt user2.keytab user1

$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]

Valid starting     Expires            Service principal
10/03/15 17:25:03  11/03/15 03:25:03  krbtgt/[email protected]
  renew until 11/03/15 17:25:03

執行伺服器。

$ java -jar sec-server-spnego-form-auth-2.1.1.jar

現在您應該能夠開啟瀏覽器,並讓它使用現有的票證執行 Spnego 驗證。

請參閱 設定瀏覽器以進行 Spnego 協商 以取得更多關於設定瀏覽器以使用 Spnego 的指示。

server:
    port: 8080
app:
    service-principal: HTTP/[email protected]
    keytab-location: /tmp/tomcat.keytab

安全性伺服器 Spnego 和表單驗證 Xml 範例

這是一個與 安全性伺服器 Spnego 和表單驗證範例 相同的範例,但使用基於 xml 的設定而不是 JavaConfig。

執行伺服器。

$ java -jar sec-server-spnego-form-auth-xml-2.1.1.jar

安全性用戶端 KerberosRestTemplate 範例

這是一個使用 Spring RestTemplate 存取 Kerberos 保護資源的範例。您可以將此範例與 安全性伺服器 Spnego 和表單驗證範例 一起使用。

預設應用程式設定如下所示。

app:
    user-principal: [email protected]
    keytab-location: /tmp/user2.keytab
    access-url: http://neo.example.org:8080/hello

使用 user1 主體 設定 MIT Kerberos,使用認證手動執行 Kerberos 登入。

$ java -jar sec-client-rest-template-2.1.1.jar --app.user-principal --app.keytab-location

在上方,我們僅將 app.user-principalapp.keytab-location 設定為空值,這會停用 keytab 檔案的使用。

如果操作成功,您應該會看到下方輸出,其中包含 [email protected]

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
  <head>
    <title>Spring Security Kerberos Example</title>
  </head>
  <body>
    <h1>Hello [email protected]!</h1>
  </body>
</html>

或使用具有 keytab 檔案的 user2

$ java -jar sec-client-rest-template-2.1.1.jar

如果操作成功,您應該會看到下方輸出,其中包含 [email protected]

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
  <head>
    <title>Spring Security Kerberos Example</title>
  </head>
  <body>
    <h1>Hello [email protected]!</h1>
  </body>
</html>