我们有一个内部开发的基于客户机/服务器的应用程序。客户端和服务器通过TCP/IP连接与特定于应用程序的协议进行通信。客户端在Windows上运行,服务器在Linux上运行。所有计算机都位于相同的Active Directory/Kerberos域/领域中。
目前,用户在启动应用程序时输入用户名和密码。服务器检查用户名和密码(身份验证)。服务器还根据用户名确定对资源的访问(授权)。
我们希望向应用程序添加单点登录(SSO)功能。也就是说,我们不希望用户输入用户名和密码,但希望以当前Windows用户身份自动登录。
当然,必须安全地确定当前Windows用户。
我想出了以下设置:
这是可行的,但我确实有一些问题:
您在这里描述的是验证用户的正确方法。您不必担心用户指定不同的名称;这就是Kerberos为您处理的事情。
如果客户端能够获得服务票证,那么他们必须能够针对KDC(Active Directory)进行身份验证。KDC创建包含用户名的服务票证,并使用服务的密钥对其进行加密。
客户端将无法使用假名为服务器创建票证,因为它没有加密票证所需的密钥。
当然,这一切都假设您已正确设置了所有内容;例如,客户端不应访问服务的keytab文件,并且服务的key tab中不应有任何主体,除了它自己的主体。
这里有一个非常详细的解释它是如何工作的。
问题内容: 我正在尝试连接到在Cloudera上运行的HDFS实例。我的第一个步骤启用Kerberos和创建Keytabs(如图所示这里)。 在下一步中,我想使用密钥表进行身份验证。 它失败并显示以下错误 java.io.IOException:从keytab /etc/hadoop/conf/hdfs.keytab登录hdfs @ CLOUDERA失败:javax.security.auth.l
我一直在尝试在Windows上获取curl版本7.63以连接到HTTP/2 REST api并使用Windows身份验证。 RESTendpoint设置为进行“协商”,并在“加入域”的windows服务器上运行。因此,它将从Windows DC KDC获得kerberos委派。 这一切都可以在http/1.1中工作,但如果我尝试强制curl使用http/2,它将恢复为http/1.1 当我使用“基
问题内容: 我最近开始在同一台PC上使用Windows和Linux- 它们安装在两个不同的分区中,第三个分区包含公用数据和存档。从Windows创建的virtualenvs使用文件夹“ Scripts”创建,而Linux中的对应文件是文件夹“ bin”。 这里的问题是这些文件夹中的文件不适用于两个操作系统。例如,bin(在Linux中创建)中包含的“激活”不在Windows中运行,另一方面,在Wi
问题内容: 我在生成允许分别使用gcc和MinGW在Linux和Windows中构建共享库的构建设置时遇到了麻烦。在Linux中,共享库不必在编译时就解决所有依赖关系。相反,在Windows中似乎是这种情况。这是问题设置: 现在,在Linux中,它可以编译并正常运行: 在Windows中,我们需要更改为dll,这是次要的事情: 但是,当我们尝试构建时,会出现以下错误: 现在,我们可以通过简单地将f
问题内容: 如何确定该路径: 在linux和Windows上都能工作吗? 问题答案: 在Linux中,路径分隔符为。在Windows中,它是或。因此,只要使用正斜杠就可以了。
我是JBoss新手,被指派了一项任务,使用Kerberos在Windows服务器上实现SSO(JBoss EAP 7)。 尝试过谷歌,但结果很混乱。 你能分享一些完成任务的详细步骤吗。