Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
Table of Contents |
---|
This article describes the single sign-on (SSO) setup between Joget Workflow and Microsoft Active Directory using Kerberos and SPNEGO.
Kerberos is a network authentication protocol designed by the Massachusetts Institute of Technology (MIT) for SSO in client-server environments, while SPNEGO (Simple and Protected GSS-API Negotiation Mechanism) extends Kerberos SSO to web applications.
Thai |
---|
บทนำ
Kerberos เป็นโปรโตคอลการตรวจสอบความถูกต้องเครือข่ายที่ออกแบบโดย Massachusetts Institute of Technology (MIT) สำหรับ SSO ในสภาพแวดล้อมของไคลเอนต์ - เซิร์ฟเวอร์ในขณะที่ SPNEGO (กลไกการเจรจาต่อรอง GSS-API ที่ง่ายและมีการป้องกัน) ขยาย Kerberos SSO ไปยังเว็บแอปพลิเคชัน |
Test Environment
Thai |
---|
สภาพแวดล้อมการทดสอบ |
Joget Server: Joget Workflow v6 Enterprise on Apache Tomcat 8 and Java 8
Windows Server: Windows Server 2012 R2 Datacenter (running on VirtualBox within a NAT Network, downloaded from https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2012-r2)
Windows Client PC: IE11 on Windows 10 (running on VirtualBox within a NAT Network, downloaded from https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/)
Test Settings
Thai |
---|
ทดสอบการตั้งค่า |
Windows Server COMPUTER NAME is WIN-TKDH9LCHUUO
WINDOWS DOMAIN is windows.local
DOMAIN USER is joget
JOGET DOMAIN is joget.windows.local
Infoinfo | ||||||
---|---|---|---|---|---|---|
|
Thai |
---|
Kerberos SSO Setup Configuration
|
Thai |
---|
ติดตั้งเซิร์ฟเวอร์ DNS |
Go to Server Manager > Add roles and features to install the DNS Server.
Thai |
---|
ไปที่ตัวจัดการเซิร์ฟเวอร์> เพิ่มบทบาทและคุณสมบัติเพื่อติดตั้งเซิร์ฟเวอร์ DNS |
In the Network and Sharing Center, configure the network adapter so that the Preferred DNS server is 127.0.0.1.
Thai |
---|
ในศูนย์เครือข่ายและการใช้ร่วมกันกำหนดค่าการ์ดเชื่อมต่อเครือข่ายเพื่อให้เซิร์ฟเวอร์ DNS ที่ต้องการคือ 127.0.0.1 |
In the DNS Manager, right click on the server name and Configure a DNS Server to create a forward lookup zone for windows.local.
Thai |
---|
ในตัวจัดการ DNS คลิกขวาที่ชื่อเซิร์ฟเวอร์และกำหนดค่าเซิร์ฟเวอร์ DNS เพื่อสร้างโซนการค้นหาแบบส่งต่อสำหรับ windows.local |
Thai |
---|
เพิ่มชื่อโดเมน Joget ใน Windows Server DNS |
In the windows.local DNS zone, add an A record for joget to point to the Joget server IP.
Thai |
---|
ในโซน windows.local DNS เพิ่มระเบียน A สำหรับ joget เพื่อชี้ไปที่ IP เซิร์ฟเวอร์ Joget |
Test ping to ensure that joget.windows.local resolves to the correct IP.
Thai |
---|
ทดสอบ ping เพื่อให้แน่ใจว่า joget.windows.local แก้ไขเป็น IP ที่ถูกต้อง |
Thai |
---|
สร้างผู้ใช้โดเมน Windows สำหรับบริการ |
In Active Directory Users and Computers, create a domain user joget. This is the user account to be mapped to the service name used by the Joget server.
Thai |
---|
ในผู้ใช้ Active Directory และคอมพิวเตอร์สร้าง joget ผู้ใช้โดเมน นี่คือบัญชีผู้ใช้ที่จะแมปกับชื่อบริการที่ใช้โดยเซิร์ฟเวอร์ Joget |
Thai |
---|
ลงทะเบียนชื่อบริการหลัก (SPN) |
In PowerShell, execute: setspn -s HTTP/{JOGET DOMAIN} {DOMAIN USER} e.g.
Thai |
---|
ใน PowerShell ให้ดำเนินการ: setspn -s HTTP / {JOGET DOMAIN} {DOMAIN USER} เช่น |
Code Block |
---|
setspn -s HTTP/JOGET.WINDOWS.LOCAL joget |
In PowerShell, check that the SPN has been registered
Thai |
---|
ใน PowerShell ให้ตรวจสอบว่า SPN ได้รับการลงทะเบียนแล้ว |
Code Block |
---|
setspn -L joget |
should display
Thai |
---|
ควรแสดง |
Code Block |
---|
Registered ServicePrincipalNames for CN=Joget,CN=Users,DC=windows,DC=local: HTTP/JOGET.WINDOWS.LOCAL |
Thai |
---|
ติดตั้งเซิร์ฟเวอร์ Joget สำหรับ Kerberos |
Thai |
---|
เพิ่มโดเมน Windows ไปที่ไฟล์ Hosts |
Edit /etc/hosts (Linux or macOS) or C:\Windows\System32\drivers\etc\hosts (Windows) and add the server IP e.g.
Thai |
---|
แก้ไข / etc / hosts (Linux หรือ macOS) หรือ C: \ Windows \ System32 \ drivers \ etc \ hosts (Windows) และเพิ่ม IP ของเซิร์ฟเวอร์เช่น |
Code Block |
---|
192.168.56.102 windows.local win-tkdh9lchuuo win-tkdh9lchuuo.windows.local |
Info | ||
---|---|---|
NOTE: This step is not required if the Joget Server is using the Windows Server as the DNS server.
|
Thai |
---|
สร้างไฟล์การระบุ Kerberos (Keytab) |
Thai |
---|
ใช้งาน Windows |
In PowerShell on the Windows Server, generate a keytab file using the Ktpass tool:
Thai |
---|
ใน PowerShell บน Windows Server ให้สร้างไฟล์ตารางคีย์โดยใช้เครื่องมือ Ktpass: |
Code Block |
---|
ktpass -out joget.keytab -mapuser joget@WINDOWS.LOCAL -pass Pass@word1 -crypto all -ptype KRB5_NT_PRINCIPAL -princ HTTP/joget.windows.local@WINDOWS.LOCAL |
Copy the generated joget.keytab file into the Joget server e.g. at C:\Joget-v6-Enterprise\wflow\joget.keytab
Thai |
---|
คัดลอกไฟล์ joget.keytab ที่สร้างไปยังเซิร์ฟเวอร์ Joget เช่น ที่ C: \ Joget-v6-Enterprise \ wflow \ joget.keytab |
Java 8 may be required for the Kerberos authentication to work with the ktpass generated keytab. Download and install JDK 8, and edit the tomcat-run.bat startup script to update the JAVA_HOME path accordingly.
Thai |
---|
อาจจำเป็นต้องใช้ Java 8 สำหรับการพิสูจน์ตัวตน Kerberos เพื่อทำงานกับ ktpass keytab ที่สร้างขึ้น ดาวน์โหลดและติดตั้ง JDK 8 และแก้ไขสคริปต์เริ่มต้น tomcat-run.bat เพื่ออัปเดตพา ธ JAVA_HOME ตามลำดับ |
Create a krb5.ini file under C:\Windows folder with these configurations:
Thai |
---|
สร้างไฟล์ krb5.ini ภายใต้โฟลเดอร์ C: \ Windows ด้วยการกำหนดค่าเหล่านี้: |
Code Block |
---|
[libdefaults] default = WINDOWS.LOCAL default_realm = WINDOWS.LOCAL dns_lookup_realm = true dns_lookup_kdc = true [realms] WINDOWS.LOCAL = { kdc = WIN-TKDH9LCHUUO.WINDOWS.LOCAL:88 default_domain = WINDOWS.LOCAL } [domain_realm] .windows.local = WINDOWS.LOCAL windows.local = WINDOWS.LOCAL |
Install the krb5-user package
Thai |
---|
ติดตั้งแพ็คเกจผู้ใช้ krb5 |
Code Block |
---|
sudo apt-get install krb5-user |
and configure the realm as WINDOWS.LOCAL and the KDC as WIN-TKDH9LCHUUO.WINDOWS.LOCAL:88
Thai |
---|
และกำหนดค่า realm เป็น WINDOWSLOCAL และ KDC เป็น WIN-TKDH9LCHUUO.WINDOWS.LOCAL: 88 |
In a terminal, run
Thai |
---|
ในเทอร์มินัลให้เรียกใช้ |
Code Block |
---|
kinit joget@WINDOWS.LOCAL |
Info | ||
---|---|---|
IMPORTANT NOTE: The domain must be UPPER CASE
|
The command should run without error
Thai |
---|
คำสั่งควรรันโดยไม่มีข้อผิดพลาด |
Confirm the configuration in /etc/krb5.conf
Thai |
---|
ยืนยันการกำหนดค่าใน /etc/krb5.conf |
Code Block |
---|
[libdefaults] default = WINDOWS.LOCAL default_realm = WINDOWS.LOCAL dns_lookup_realm = true dns_lookup_kdc = true [realms] WINDOWS.LOCAL = { kdc = WIN-TKDH9LCHUUO.WINDOWS.LOCAL:88 default_domain = WINDOWS.LOCAL } [domain_realm] .windows.local = WINDOWS.LOCAL windows.local = WINDOWS.LOCAL |
Info | ||
---|---|---|
IMPORTANT NOTE: The domain must be UPPER CASE
|
In a terminal, generate a keytab file using:
Thai |
---|
ในเทอร์มินัลสร้างไฟล์ keytab โดยใช้: |
Code Block |
---|
ktutil ktutil: add_entry -password -p HTTP/JOGET.WINDOWS.LOCAL@WINDOWS.LOCAL -k 1 -e arcfour-hmac-md5 Password for HTTP/JOGET.WINDOWS.LOCAL@WINDOWS.LOCAL: ktutil: wkt /etc/joget.keytab |
List the SPNs in the keytab using:
Thai |
---|
แสดงรายการ SPN ในแท็บตารางโดยใช้: |
Code Block |
---|
ktutil ktutil: rkt /etc/joget.keytab ktutil: list |
In a terminal, run
Thai |
---|
ในเทอร์มินัลให้เรียกใช้ |
Code Block |
---|
kinit joget@WINDOWS.LOCAL |
Info | ||
---|---|---|
IMPORTANT NOTE: The domain must be UPPER CASE
|
The command should run without error, or just a warning “Encryption type arcfour-hmac-md5(23) used for authentication is weak and will be deprecated”
Thai |
---|
คำสั่งควรทำงานโดยไม่มีข้อผิดพลาดหรือเพียงแค่คำเตือน“ ประเภทการเข้ารหัส arcfour-hmac-md5 (23) ที่ใช้สำหรับการตรวจสอบความถูกต้องอ่อนแอและจะถูกคัดค้าน” |
Edit /etc/krb5.conf
Thai |
---|
แก้ไข /etc/krb5.conf |
Code Block |
---|
[libdefaults] default = WINDOWS.LOCAL default_realm = WINDOWS.LOCAL dns_lookup_realm = true dns_lookup_kdc = true [realms] WINDOWS.LOCAL = { kdc = WIN-TKDH9LCHUUO.WINDOWS.LOCAL:88 default_domain = WINDOWS.LOCAL } [domain_realm] .windows.local = WINDOWS.LOCAL windows.local = WINDOWS.LOCAL |
Info | ||
---|---|---|
IMPORTANT NOTE: The domain must be UPPER CASE
|
In a terminal, generate a keytab file using:
Thai |
---|
ในเทอร์มินัลสร้างไฟล์ keytab โดยใช้: |
Code Block |
---|
ktutil -k joget.keytab add -p HTTP/JOGET.WINDOWS.LOCAL@WINDOWS.LOCAL -e arcfour-hmac-md5 -V 1 |
List the SPNs in the keytab using:
Thai |
---|
แสดงรายการ SPN ในแท็บตารางโดยใช้: |
Code Block |
---|
ktutil -k joget.keytab list |
Keep a copy of the generated joget.keytab file e.g. in /etc/joget.keytab
Thai |
---|
เก็บสำเนาของไฟล์ joget.keytab ที่สร้างขึ้นเช่น ใน /etc/joget.keytab |
Thai |
---|
กำหนดค่าปลั๊กอินตัวจัดการไดเรกทอรีของ Kerberos |
Thai |
---|
อัปโหลดปลั๊กอินเครื่องมือจัดการไดเรกทอรีของ Kerberos |
Download the Kerberos Directory Manager plugin from the Joget Marketplace and upload it in Settings > Manage Plugins.
Thai |
---|
ดาวน์โหลดปลั๊กอิน Kerberos Directory Manager plugin จาก Joget Marketplace และอัปโหลดในการตั้งค่า> จัดการปลั๊กอิน |
Thai |
---|
กำหนดค่าปลั๊กอินตัวจัดการไดเรกทอรีของ Kerberos |
In Settings > Directory Manager, select the Kerberos Directory Manager plugin, and key in the appropriate values in the configuration:
Thai |
---|
ในการตั้งค่า> ตัวจัดการไดเรกทอรีเลือกปลั๊กอิน Kerberos Directory Manager และป้อนค่าที่เหมาะสมในการกำหนดค่า: |
Service Principal: HTTP/JOGET.WINDOWS.LOCAL
Path to Keytab File: /etc/joget.keytab (Linux) or C:/Joget-v6-Enterprise/wflow/joget.keytab (Windows)
Debug Enabled: View debugging messages in the logs
Note | ||
---|---|---|
Please remember to configure the LDAP Directory Manager as external directory manager to retrieve users from Active Directory.
|
Thai |
---|
กำหนดค่ารายการโดเมนที่อนุญาตพิเศษของ API |
In Settings > General Settings, set the API Domain Whitelist to * to allow SSO requests to the Kerberos Directory Manager.
Thai |
---|
ในการตั้งค่า> การตั้งค่าทั่วไปให้ตั้งค่ารายการโดเมนที่อนุญาตพิเศษเป็น * เพื่ออนุญาตให้คำขอ SSO เป็น Kerberos Directory Manager |
...
Thai |
---|
ตั้งค่าไคลเอ็นต์พีซีสำหรับ SSO |
Thai |
---|
เพิ่มไคลเอ็นต์ PC ในโดเมน Windows |
Ensure that the Windows Server is reachable on the network from the Client PC.
Thai |
---|
ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ Windows สามารถเข้าถึงได้บนเครือข่ายจากไคลเอนต์พีซี |
Set the DNS server to the IP address of the Windows Server.
Thai |
---|
ตั้งค่าเซิร์ฟเวอร์ DNS เป็นที่อยู่ IP ของ Windows Server |
Ping the windows domain name to test.
Thai |
---|
Ping ชื่อโดเมน windows เพื่อทดสอบ |
Click on File Explorer, right click on the This PC and choose Properties. Click on Change Settings next to the computer name. Click on Change and set the Domain e.g. windows.local, keying in the domain administrator login when prompted. Restart after joining the domain is successful, and login as a domain user.
Thai |
---|
คลิกที่ File Explorer คลิกขวาที่พีซีนี้และเลือกคุณสมบัติ คลิกที่เปลี่ยนการตั้งค่าถัดจากชื่อคอมพิวเตอร์ คลิกที่เปลี่ยนและตั้งค่าโดเมนเช่น windows.local โดยพิมพ์ชื่อผู้ดูแลระบบโดเมนเมื่อได้รับแจ้ง รีสตาร์ทหลังจากเข้าร่วมโดเมนสำเร็จแล้วและเข้าสู่ระบบในฐานะผู้ใช้โดเมน |
Thai |
---|
ตั้งค่าเบราว์เซอร์สำหรับ Windows Authentication |
In IE, click on Internet Options > Security > Local intranet site > Advanced and add the Joget domain e.g. http://joget.windows.local
Thai |
---|
ใน IE คลิกที่ตัวเลือกอินเทอร์เน็ต> ความปลอดภัย> ไซต์อินทราเน็ตเฉพาะที่> ขั้นสูงและเพิ่มโดเมน Joget เช่น http: //joget.windows.local |
Thai |
---|
ทดสอบ SSO |
Using the Kerberos Directory Manager plugin approach, access http://joget.windows.local/jw/web/json/plugin/org.joget.plugin.kerberos.KerberosDirectoryManager/service to SSO.
Thai |
---|
ใช้วิธีการปลั๊กอินตัวจัดการไดเรกทอรีของ Kerberos เข้าถึง http://joget.windows.local/jw/web/json/plugin/org.joget.plugin.kerberos.KerberosDirectoryManager/service ไปยัง SSO |
Info | ||||||
---|---|---|---|---|---|---|
Please note that for the SSO to work properly:
|
Thai |
---|
ทรัพยากร |
https://technet.microsoft.com/en-us/library/hh831553(v=ws.11).aspx
https://msftplayground.com/2009/08/configure-kerberos-authentication/
https://technet.microsoft.com/en-us/library/cc731241(v=ws.11).aspx
https://technet.microsoft.com/en-us/library/hh831553(v=ws.11).aspx
https://msftplayground.com/2009/08/configure-kerberos-authentication/
https://venkatsadasivam.com/2009/08/29/single-sign-on-in-java-platform/
http://docs.spring.io/spring-security-kerberos/docs/1.0.1.RELEASE/reference/htmlsingle/
https://tomcat.apache.org/tomcat-8.0-doc/windows-auth-howto.html
http://docs.oracle.com/javase/jndi/tutorial/ldap/security/gssapi.html
http://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/lab/part1.html#PART1
https://docs.oracle.com/cd/E23943_01/web.1111/e13707/sso.htm#SECMG481
https://stackoverflow.com/questions/25289231/using-gssmanager-to-validate-a-kerberos-ticket
...