2013-07-29 41 views
6

Tôi đang cố triển khai SSO trên Windows (bằng Java). Gần đây tôi phát hiện ra this example làm chính xác những gì tôi muốn làm gì với Waffle:Ví dụ về Waffle SSO này là gì

// client credentials handle 
IWindowsCredentialsHandle credentials= WindowsCredentialsHandleImpl.getCurrent("Negotiate"); 
credentials.initialize(); 

// initial client security context 
WindowsSecurityContextImpl clientContext = new WindowsSecurityContextImpl(); 
clientContext.setPrincipalName(Advapi32Util.getUserName()); 
clientContext.setCredentialsHandle(credentials.getHandle()); 
clientContext.setSecurityPackage(securityPackage); 
clientContext.initialize(); 

// accept on the server 
WindowsAuthProviderImpl provider = new WindowsAuthProviderImpl(); 
IWindowsSecurityContext serverContext = null; 

do { 

    if (serverContext != null) { 

     // initialize on the client 
     SecBufferDesc continueToken = new SecBufferDesc(Sspi.SECBUFFER_TOKEN, serverContext.getToken()); 
     clientContext.initialize(clientContext.getHandle(), continueToken); 
    } 

    // accept the token on the server 
    serverContext = provider.acceptSecurityToken(clientContext.getToken(), "Negotiate"); 

} while (clientContext.getContinue() || serverContext.getContinue()); 

System.out.println(serverContext.getIdentity().getFqn()); 
for (IWindowsAccount group : serverContext.getIdentity().getGroups()) { 
    System.out.println(" " + group.getFqn()); 
}    

... 

Ví dụ rất dễ dàng, nó hoạt động và nó seams để thực hiện chính xác những gì tôi muốn. Nhưng tôi không hiểu nó hoạt động ra sao.

  • Điều gì đang xảy ra trong nền?
  • Waffle có nhận được vé Kerberos từ Windows không?
  • Làm cách nào để máy chủ xác thực vé của khách hàng?
  • Tôi có thể hoàn toàn tin tưởng các nhóm người dùng mà tôi nhận được sau vòng lặp từ ngữ cảnh của máy chủ không?

Cảm ơn. Thomas.

+0

Nếu tôi đặt mã này, tôi thêm tham chiếu vào bình, tôi có thể biên dịch jar của tôi, nhưng trên thời gian chạy, tomcat ném Advautil32 không thể được giải quyết, nơi nào tôi cần phải đặt lọ waffle? cảm ơn – ilansch

Trả lời

6

Waffle có nhận vé Kerberos từ Windows không?

Waffle sử dụng Windows SSPI, thực hiện tất cả các hoạt động liên quan đến vé Kerberos thay mặt khách hàng. Khách hàng không bao giờ thấy vé.

Làm cách nào để máy chủ xác thực vé của khách hàng?

Đây là câu hỏi cơ bản về Kerberos. Mã thông báo được gửi đến máy chủ được mã hóa bằng khóa bí mật của máy chủ, đảm bảo mã thông báo được tạo bởi Dịch vụ cấp vé, chứng thực máy khách.

Tôi có thể tin tưởng tuyệt đối vào các nhóm người dùng mà tôi nhận được sau vòng lặp từ ngữ cảnh của máy chủ không?

Có, chúng được lấy từ mã thông báo bảo mật. Đây là phần mở rộng dành riêng cho Windows của giao thức Kerberos của MIT.