Joget DX Preview Release Available for Download

Check out Joget DX, the next generation successor to Joget Workflow for faster, simpler digital transformation.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

介绍

本文介绍 使用  Kerberos  和  SPNEGOJoget Workflow  和Microsoft  Active Directory之间进行单点登录(SSO)

Kerberos是由麻省理工学院(MIT)为客户端 - 服务器环境中的SSO 设计的网络身份验证协议  ,而SPNEGO(简单和受保护的GSS-API协商机制)将Kerberos SSO扩展到Web应用程序。 

测试环境

测试设置

  • Windows Server 计算机名称 是 WIN-TKDH9LCHUUO 

  • WINDOWS 域是 windows.local

  • 域用户是 joget

  • JOGET 域名 是 joget.windows.local

     

  • 本文假设您熟悉Windows Server和Windows 10系统以及网络管理的基础知识

  • 此设置在本地VirtualBox环境中进行测试。应相应调整不同环境的实际设置

Kerberos SSO设置配置

1.设置Windows Server Kerberos密钥分发中心(KDC):

1.1安装DNS服务器

  1. 转到“服务器管理器”>“添加角色和功能”以安装DNS服务器。 

  2. 在网络和共享中心中,配置网络适配器,以便首选DNS服务器为127.0.0.1。

  3. 在DNS管理器中,右键单击服务器名称并配置DNS服务器为windows.local创建正向查找区域

     

1.2 将Joget域名添加到Windows Server DNS中

 

  1. 在windows.local DNS区域中,为joget添加A记录以指向Joget服务器IP

     

  2. 测试ping以确保joget.windows.local解析为正确的IP

     

1.3 为服务创建Windows域用户

 

  1. 在“Active Directory用户和计算机”中,创建域用户joget。这是要映射到Joget服务器使用的服务名称的用户帐户

1.4 注册服务主体名称(SPN)

 

  1. 在PowerShell中,执行:setspn -s HTTP / {JOGET DOMAIN} {DOMAIN USER}例如 

在PowerShell中,检查SPN是否已注册  

应该显示 

2. 为Kerberos设置Joget Server

2.1 将Windows域添加到Joget Server 的hosts文件

 

  1. 编辑 /etc/hosts (Linux or macOS)  或者 C:\Windows\System32\drivers\etc\hosts (Windows) 并且添加服务 IP ,比如 

    注意:如果Joget Server使用Windows Server作为DNS服务器,则不需要此步骤。

2.2 创建Kerberos标识(Keytab)文件

 

使用Windows

  1. 在Windows Server上的PowerShell中,使用Ktpass工具生成密钥表文件  


  2. 将生成的joget.keytab文件复制到Joget服务器,例如C:\Joget-v6-Enterprise\wflow\joget.keytab

  3. Kerberos身份验证可能需要Java 8才能使用ktpass生成的密钥表。 下载并安装JDK 8,并编辑tomcat-run.bat启动脚本以相应地更新JAVA_HOME路径。

使用Linux

  1. 安装krb5-user软件包 

     and configure the realm as WINDOWS.LOCAL and the KDC as WIN-TKDH9LCHUUO.WINDOWS.LOCAL:88

  2. 在终端中,执行


    重要说明:域名必须为大写


    该命令应该运行没有错误


  3. 在/etc/krb5.conf中确认配置 

    重要说明:域名必须为大写

  4. 在终端中,使用以下命令生成密钥表文件: 

  5. 使用以下方法列出密钥表中的SPN: 

使用macOS

  1. 在终端中,运行 

    重要说明:域名必须为大写


    该命令应该没有错误地运行,或者只是警告“用于身份验证的加密类型arcfour-hmac-md5(23)很弱并且将被弃用”

  2. 编辑 /etc/krb5.conf 

    重要说明:域名必须为大写

  3. 在终端中, 生成一个 keytab 文件: 

  4. 使用以下方法列出密钥表中的SPN:

  5. 保留生成的joget.keytab文件的副本,例如在/etc/joget.keytab中

3. 配置Kerberos目录管理器插件

3.1 上传Kerberos目录管理器插件

 

  1. 从Joget Marketplace 下载  Kerberos目录管理器插件,并将其上载到设置>管理插件中. 

3.2 配置Kerberos目录管理器插件

 

  1. 在“设置”>“目录管理器”中,选择Kerberos目录管理器插件,然后键入配置中的相应值: 

    • 服务主体:HTTP/JOGET.WINDOWS.LOCAL

    • Keytab文件的路径:/etc/joget.keytab(Linux)或C:/Joget-v6-Enterprise/wflow/joget.keytab(Windows)

    • Debug Enabled:查看日志中的调试信息

    请记住将LDAP目录管理器配置为外部目录管理器以从Active Directory检索用户。

3.3 配置API域白名单

 

  1. 在“设置”>“常规设置”中,将API域白名单设置为 * 以允许对Kerberos目录管理器的SSO请求。 

 

4. 为SSO设置客户端PC

4.1 将客户端PC添加到Windows域

 

  1. 确保可以从客户端PC在网络上访问Windows Server

  2. 将DNS服务器设置为Windows Server的IP地址. 

  3. ping Windows域名进行测试。 

  4. 单击文件资源管理器,右键单击此PC,然后选择属性。单击计算机名称旁边的“更改设置”。单击“更改”并设置域,例如windows.local,在出现提示时键入域管理员登录名。加入域后重新启动成功,并以域用户身份登录。

4.2 为浏览器设置Windows身份验证

 

  1. 在IE中,单击Internet选项>安全性>本地Intranet站点>高级,然后添加Joget域,例如   http://joget.windows.local  

4.3 测试SSO

 

  1. 使用Kerberos目录管理器插件方法,访问  http://joget.windows.local/jw/web/json/plugin/org.joget.plugin.kerberos.KerberosDirectoryManager/service  到SSO。

    请注意,要使SSO正常工作:

    • 客户端PC和Joget服务器必须驻留在不同的计算机上

    • Windows服务器和客户端PC必须位于同一Windows域中

资源

Introduction to Kerberos and SPNEGO

Configuring Kerberos on Windows Server

Kerberos with Java and Spring

 

  • No labels