gpt4 book ai didi

java - 这个 Waffle SSO 示例在做什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:13 26 4
gpt4 key购买 nike

我正在尝试在 Windows 上(使用 Java)实现 SSO。最近我发现this exampleWaffle 做我想做的事:

// 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());
}

...

这个示例很简单,它可以正常工作,并且可以完全按照我的要求进行操作。但我不明白它是如何工作的。

  • 后台发生了什么?
  • Waffle 是否从 Windows 获取 Kerberos 票证?
  • 服务器如何验证客户端的票证?
  • 我可以绝对信任我在 do-loop 之后得到的用户组吗来自服务器上下文?

谢谢。托马斯。

最佳答案

Does Waffle get the Kerberos ticket from Windows?

Waffle 使用 Windows SSPI,它代表客户端执行涉及 Kerberos 票证的所有操作。客户永远不会看到票。

How does the server validate the ticket of the client?

这是一个基本的 Kerberos 问题。发送到服务器的 token 由服务器的 key 加密,这保证 token 是由对客户端进行身份验证的票证授予服务创建的。

Can I absolutely trust the user groups which I get after the do-loop from the server context?

是的,是从安全 token 中检索的。这是 MIT Kerberos 协议(protocol)的特定于 Windows 的扩展。

关于java - 这个 Waffle SSO 示例在做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com