日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Keycloak SSO集成到jBPM和Drools Workbench中

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Keycloak SSO集成到jBPM和Drools Workbench中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

單一登錄(SSO)和相關令牌交換機制正在成為Web上不同環境中進行身份驗證和授權的最常見方案,尤其是在遷移到云中時。

本文討論了Keycloak與jBPM或Drools應用程序的集成,以便使用Keycloak上提供的所有功能。 Keycloak是用于瀏覽器應用程序和RESTful Web服務的集成SSO和IDM。 在Keycloak的主頁上進一步了解它。

與Keycloak集成的結果具有許多優勢,例如:

  • 為包括jBPM和Drools工作臺在內的不同客戶提供集成的SSO和IDM環境
  • 社交登錄–使用您的Facebook,Google,Linkedin等帳戶
  • 用戶會話管理
  • 以及更多…

下一節將介紹Keycloak的以下集成點:

  • 通過Keycloak服務器進行工作臺身份驗證 :它基本上包括通過Keycloak SSO保護Web客戶端和遠程服務客戶端。 因此,Web界面或遠程服務使用者(無論是用戶還是服務)都將通過KC進行身份驗證。
  • 通過Keycloak服務器執行服務器認證 :包括保護執行服務器提供的遠程服務(因為它不提供Web界面)。 任何遠程服務使用者(無論是用戶還是服務)都將通過KC驗證身份。
  • 消費遠程服務 :本節描述第三方客戶端如何使用由Workbench和Execution Server提供的遠程服務端點。

情境

將下圖視為本文示例的環境:

示例場景

Keycloak是一個獨立的過程,提供遠程身份驗證,授權和管理服務,這些服務可能會被一個或多個jBPM應用程序通過網絡使用。

考慮以下用于構建此環境的主要步驟:

  • 安裝和設置Keycloak服務器
  • 為此示例創建和設置領域-配置領域的客戶端,用戶和角色
  • 安裝和設置SSO客戶端適配器和jBPM應用程序

筆記:

  • 最終的環境和本文的不同配置均基于jBPM(KIE)工作臺,但相同的環境也可以應用于KIE Drools工作臺。
  • 本示例使用最新的6.4.0.CR2社區發行版

步驟1 –安裝和設置Keycloak服務器

Keycloak提供了廣泛的文檔以及有關在不同環境中進行安裝的幾篇文章。 本節介紹了用于構建示例的集成環境的最小設置。 如果需要更多信息,請參考Keycloak文檔 。

以下是最小化Keycloak安裝和設置的步驟:

  • 從下載部分下載最新版本的Keycloak。 本示例基于Keycloak 1.9.0.Final。
  • 將下載的Keycloak發行版解壓縮到一個文件夾中,我們將其稱為$KC_HOME
  • 運行KC服務器–此示例基于在同一主機上同時運行Keycloak和jBPM。 為了避免端口沖突,可以將Keycloak服務器的端口偏移量用作: $KC_HOME/bin/standalone.sh -Djboss.socket.binding.port-offset=100
  • 創建Keycloak的管理用戶–執行以下命令以創建此示例的管理員用戶: $KC_HOME/bin/add-user.sh -r master -u 'admin' -p 'admin'
  • Keycloak管理控制臺將位于http:// localhost:8180 / auth / admin (使用admin / admin作為登錄憑據)。

    第2步–創建并設置演示領域

    安全領域用于限制對不同應用程序資源的訪問。

    Keycloak服務器運行之后,下一步就是創建領域。 該領域將為jBPM應用程序提供不同的用戶,角色,會話等。

    Keycloak提供了幾個領域創建和管理的示例 ,從官方示例到帶有更多示例的不同文章。

    您可以手動創建領域,也可以僅導入給定的json文件。

    逐步創建領域

    請按照以下步驟操作,以創建本文稍后使用的演示領域:

  • 轉到Keycloak 管理控制臺 ,然后單擊“ 添加領域”按鈕。 給它命名為demo 。
  • 轉到“客戶端”部分(從管理控制臺主菜單),然后為演示領域創建一個新客戶端:
    • 客戶編號: kie
    • 客戶端協議: openid-connect
    • 訪問類型: 機密
    • 根URL: http:// localhost:8080
    • 基本網址: /kie-wb-6.4.0.Final
    • 重定向URI: /kie-wb-6.4.0.Final/*
  • 生成的kie客戶端設置屏幕:

    KIE客戶端的設置

    注意 :如您在上述設置中所看到的,它被認為是應用程序上下文路徑的值kie-wb-6.4.0.Final 。 如果您的jbpm應用程序將部署在其他上下文路徑,主機或端口上,請在此處使用您的具體設置。

    能夠使用jBPM工作臺中的演示領域的最后一步是創建應用程序的用戶和角色:

    • 轉到“角色”部分,并創建角色admin , kiemgmt和rest-all 。
    • 轉到“用戶”部分并創建管理員用戶。 在“憑據”選項卡中將密碼設置為“ password”,然后取消設置臨時開關。
    • 在“用戶”部分中,導航到“ 角色映射”選項卡,然后將admin, kiegmmt和rest-all角色分配給admin用戶

    管理員用戶的角色映射

    導入演示領域

    兩者都導入:

    • 演示領域–單擊“ 添加領域”并使用demo-realm.json文件
    • 領域用戶–導入演示領域后,在主菜單中單擊“ 導入” ,然后使用demo-users-0.json文件作為導入源

    此時,Keycloak服務器正在主機上運行,??使用最小配置集進行設置。 讓我們轉到jBPM工作臺設置。

    步驟3 –安裝和設置jBPM工作臺

    對于本教程,讓我們使用Wildfly作為jBPM工作臺的應用程序服務器,就像jBPM安裝程序默認情況下那樣。

    讓我們假設在運行jBPM安裝程序之后,將$ JBPM_HOME作為已將應用程序部署到其中的Wildfly服務器的根路徑。

    步驟3.1 –安裝KC適配器

    為了使用jBPM應用程序中的Keycloak身份驗證和授權模塊,必須在$ JBPM_HOME的服務器上安裝Wildfly的Keycloak適配器 。 Keycloak為不同的容器提供了多個開箱即用的適配器,如果您正在使用另一個容器或需要使用另一個適配器,請查看Keycloak文檔中的適配器配置 。 以下是安裝和設置Wildfly 8.2.x適配器的步驟:

  • 從此處下載適配器
  • 執行以下命令: cd $JBPM_HOME/ unzip keycloak-wf8-adapter-dist.zip // Install the KC client adaptercd $JBPM_HOME/bin ./standalone.sh -c standalone-full.xml // Setup the KC client adapter.// ** Once server is up, open a new command line terminal and run: cd $JBPM_HOME/bin ./jboss-cli.sh -c --file=adapter-install.cli
  • 步驟3.2 –配置KC適配器

    將KC適配器安裝到Wildfly中之后,下一步就是配置適配器,以指定不同的設置,例如身份驗證服務器的位置,要使用的領域等。

    Keycloak提供了兩種配置適配器的方式:

    • 每個WAR配置
    • 通過Keycloak子系統

    在此示例中,我們使用第二個選項,即Keycloak子系統,因此我們的WAR不受此類設置的影響。 如果您想使用per WAR方法,請在此處查看 。

    編輯配置文件$ JBPM_HOME / standalone / configuration / standalone-full.xml并找到子系統配置部分。 添加以下內容:

    <subsystem xmlns="urn:jboss:domain:keycloak:1.1"><secure-deployment name="kie-wb-6.4.0-Final.war"><realm>demo</realm><realm-public-key>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Q3RNbrVBcY7xbpkB2ELjbYvyx2Z5NOM/9gfkOkBLqk0mWYoOIgyBj4ixmG/eu/NL2+sja6nzC4VP4G3BzpefelGduUGxRMbPzdXfm6eSIKsUx3sSFl1P1L5mIk34vHHwWYR+OUZddtAB+5VpMZlwpr3hOlfxJgkMg5/8036uebbn4h+JPpvtn8ilVAzrCWqyaIUbaEH7cPe3ecou0ATIF02svz8o+HIVQESLr2zPwbKCebAXmY2p2t5MUv3rFE5jjFkBaY25u4LiS2/AiScpilJD+BNIr/ZIwpk6ksivBIwyfZbTtUN6UjPRXe6SS/c1LaQYyUrYDlDpdnNt6RboQIDAQAB</realm-public-key><auth-server-url>http://localhost:8180/auth</auth-server-url><ssl-required>external</ssl-required><resource>kie</resource><enable-basic-auth>true</enable-basic-auth><credential name="secret">925f9190-a7c1-4cfd-8a3c-004f9c73dae6</credential><principal-attribute>preferred_username</principal-attribute></secure-deployment> </subsystem>

    如果您在第2步中從本文中導入了示例json文件,則可以通過使用具體的部署名稱來使用與上述相同的配置。 否則,請使用您的值進行以下配置:

    • 安全部署的名稱 –使用具體應用程序的WAR文件名
    • 領域 –應用程序將使用的領域,在我們的示例中,是在第2步中創建的演示領域。
    • 領域公鑰 –在此提供演示領域的公鑰。 它不是強制性的,如果未指定,將從服務器中檢索它。 否則,您可以在Keycloak管理控制臺->領域設置(用于演示領域)->密鑰中找到它
    • 身份驗證服務器URL – Keycloak身份驗證服務器的URL
    • 資源 –在第2步中創建的客戶端的名稱。在我們的示例中,使用值kie 。
    • 啟用基本身份驗證 –在此示例中,我們也啟用基本身份驗證機制,因此客戶端可以同時使用令牌(Baerer)和基本方法來執行請求。
    • 憑據 –使用kie客戶端的密碼值。 您可以在Keycloak管理控制臺->客戶端-> kie->憑據選項卡->復制密鑰值中找到它。

    對于此示例,您必須注意將您的具體值用于安全部署名稱 , realm-public-key和憑據密碼。 您可以在此處找到有關KC適配器配置的詳細信息。

    步驟3.3 –運行環境

    此時,Keycloak服務器已在主機上啟動并運行,并且已為jBPM應用程序服務器安裝并配置了KC適配器。 您可以使用以下命令運行該應用程序:

    $JBPM_HOME/bin/standalone.sh -c standalone-full.xml

    服務器啟動后,您可以導航到該應用程序: http:// localhost:8080 / kie-wb-6.4.0.Final

    jBPM和SSO –登錄頁面

    使用Keycloak的管理員用戶憑據登錄: admin / password

    通過Keycloak保護工作臺遠程服務

    jBPM和Drools工作臺都提供了不同的遠程服務端點,第三方客戶端可以使用遠程API來使用這些端點。

    為了通過Keycloak對這些服務進行身份驗證,必須禁用BasicAuthSecurityFilter ,對jBPM的WAR文件中的WEB-INF / web.xml文件(應用程序部署描述符)應用那些修改:

  • 卸下過濾器: < filter > <filter-name>HTTP Basic Auth Filter</filter-name><filter-class>org.uberfire.ext.security.server.BasicAuthSecurityFilter</filter-class><init-param><param-name>realmName</param-name><param-value>KIE Workbench Realm</param-value></init-param> </filter><filter-mapping><filter-name>HTTP Basic Auth Filter</filter-name><url-pattern>/rest/*</url-pattern><url-pattern>/maven2/*</url-pattern><url-pattern>/ws/*</url-pattern> </filter-mapping>
  • 將遠程服務網址格式限制為: <security-constraint><web-resource-collection><web-resource-name>remote-services</web-resource-name><url-pattern>/rest/*</url-pattern><url-pattern>/maven2/*</url-pattern><url-pattern>/ws/*</url-pattern></web-resource-collection><auth-constraint><role-name>rest-all</role-name></auth-constraint> </security-constraint>
  • 重要說明 :使用遠程服務的用戶必須是角色rest-all的成員。 如第2步所述,此示例中的admin用戶已經是rest-all角色的成員。

    執行服務器

    KIE Execution Server提供的REST API比任何第三方客戶端都可以使用。 本節介紹如何將KIE Execution Server與Keycloak SSO集成在一起,以便將第三方客戶端身份管理委派給SSO服務器。

    考慮到以上環境正在運行,因此請考慮具有以下條件:

    • 在http:// localhost:8180 / auth上運行并偵聽的Keycloak服務器
    • 一個名為demo的領域,其jBPM Workbench的客戶端名為kie
    • 運行在http:// localhost:8080 / kie-wb-6.4.0-Final的jBPM Workbench

    請按照以下步驟將執行服務器添加到此環境中:

    • 在Keycloak上為執行服務器創建客戶端
    • 安裝安裝程序和執行服務器(帶有KC客戶端適配器)

    步驟1 –在Keycloak上為執行服務器創建客戶端

    根據要部署的每個執行服務器,您必須在Keycloak的演示領域中創建一個新客戶端。

  • 轉到KC管理控制臺 ->客戶端->新客戶端
  • 名稱: kie-execution-server
  • 根URL:http:// localhost:8280 /
  • 客戶端協議:openid-connect
  • 訪問類型:機密(如果需要,則為公開,但不建議公開)
  • 有效的重定向URI:/kie-server-6.4.0.Final/*
  • 基本網址:/kie-server-6.4.0.Final
  • 在此示例中,先前步驟中已經創建的管理員用戶是用于客戶端請求的管理員用戶。 因此,請確保管理員用戶是角色kie-server的成員,以便使用執行服務器的遠程服務。 如果角色不存在,請創建它。

    注意:此示例認為執行服務器將配置為使用200端口偏移量運行,因此HTTP端口將在localhost:8280可用

    步驟2 –安裝和設置KC客戶端適配器和執行服務器

    此時,一個名為kie-execution-server的客戶端已準備就緒,可以在KC服務器上從執行服務器上使用。 讓我們安裝,設置和部署執行服務器:

  • 安裝另一個Wildfly服務器以用于執行服務器和KC客戶端適配器。 您可以按照上面有關工作臺的說明進行操作,也可以遵循官方的適配器文檔 。
  • 從Wildfly服務器的配置路徑中編輯standalone-full.xml文件,并將KC子系統適配器配置為: <secure-deployment name="kie-server-6.4.0.Final.war"><realm>demo</realm><realm-public-key>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB</realm-public-key><auth-server-url>http://localhost:8180/auth</auth-server-url><ssl-required>external</ssl-required><resource>kie-execution-server</resource><enable-basic-auth>true</enable-basic-auth><credential name="secret">e92ec68d-6177-4239-be05-28ef2f3460ff</credential><principal-attribute>preferred_username</principal-attribute> </secure-deployment>
  • 如果與本示例不同,請考慮您的具體環境設置:

    • 安全部署名稱->使用正在部署的執行服務器war文件的名稱
    • 公鑰->使用演示領域公鑰或將其保留為空白,如果是這樣,服務器將提供一個
    • 資源->這次,而不是WB配置中使用的kie客戶端,使用kie-execution-server客戶端
    • 啟用基本身份驗證->由您決定。 您可以為第三方服務使用者啟用基本身份驗證
    • 憑據->將密鑰用于kie-execution-server客戶端。 您可以在KC管理控制臺的“ 憑據”標簽中找到它。

    步驟3 –部署和運行執行服務器

    只需使用任何可用機制在Wildfly中部署執行服務器即可。

    使用以下命令運行執行服務器:

    $EXEC_SERVER_HOME/bin/standalone.sh -c standalone-full.xml -Djboss.socket.binding.port-offset=200 -Dorg.kie.server.id=<ID> -Dorg.kie.server.user=<USER> -Dorg.kie.server.pwd=<PWD> -Dorg.kie.server.location=<LOCATION_URL> -Dorg.kie.server.controller=<CONTROLLER_URL> -Dorg.kie.server.controller.user=<CONTROLLER_USER> -Dorg.kie.server.controller.pwd=<CONTOLLER_PASSWORD>

    例:

    $EXEC_SERVER_HOME/bin/standalone.sh -c standalone-full.xml -Djboss.socket.binding.port-offset=200 -Dorg.kie.server.id=kieserver1 -Dorg.kie.server.user=admin -Dorg.kie.server.pwd=password -Dorg.kie.server.location=http://localhost:8280/kie-server-6.4.0.Final/services/rest/server -Dorg.kie.server.controller=http://localhost:8080/kie-wb-6.4.0.Final/rest/controller -Dorg.kie.server.controller.user=admin -Dorg.kie.server.controller.pwd=password

    重要說明 :將使用執行服務器遠程服務端點的用戶必須具有分配的角色kie-server。 因此,在KC管理控制臺中為將使用執行服務器遠程服務的用戶創建并分配此角色。

    一旦啟動,您可以將服務器狀態檢查為(考慮到對此請求使用基本身份驗證,請參閱下一個使用遠程服務以獲取更多信息):

    curl http://admin:password@localhost:8280/kie-server-6.4.0.Final/services/rest/server/

    消費遠程服務

    為了使用Workbench或Execution Server提供的不同遠程服務,您的客戶端必須在KC服務器上進行身份驗證并具有有效的令牌才能執行請求。

    注意 :請記住,為了使用遠程服務,經過身份驗證的用戶必須已分配:

    • 使用WB遠程服務的所有角色
    • 角色kie-server,用于使用Execution Server遠程服務

    請確保創建了必要的角色并將其分配給將在Keycloak管理控制臺上使用遠程服務的用戶。

    您有兩個選擇可以使用不同的刪除服務端點:

    • 如果應用程序的客戶端支持基本身份驗證,則使用它
    • 使用基于承載(令牌)的身份驗證

    使用基本身份驗證

    如果KC客戶端適配器配置啟用了基本身份驗證(如本指南中針對WB( 步驟3.2 )和Execution Server所建議的那樣),則可以避免令牌授予/刷新調用,而只需調用服務即可,如以下示例所示。

    WB遠程存儲庫端點的示例:

    curl http://admin:password@localhost:8080/kie-wb-6.4.0.Final/rest/repositories

    檢查執行服務器狀態的示例:

    curl http://admin:password@localhost:8280/kie-server-6.4.0.Final/services/rest/server/

    使用基于令牌的身份驗證

    第一步是在Keycloak上創建一個新客戶端,該客戶端允許第三方遠程服務客戶端獲取令牌。 可以通過以下方式完成:

    • 轉到KC管理控制臺,然后使用以下配置創建新客戶端 :
      • 客戶編號: kie-remote
    • 當我們將要手動獲取令牌并調用服務時,讓我們稍微延長令牌的壽命。 在生產訪問令牌中,令牌應具有相對較低的超時,最好少于5分鐘:
      • 轉到KC管理控制臺

    創建用于遠程客戶端的公共客戶端后,您現在可以通過對KC服務器的令牌端點執行HTTP請求來獲取令牌。 這是命令行示例:

    RESULT=`curl --data "grant_type=password&client_id=kie-remote&username=admin&passwordpassword=<the_client_secret>" http://localhost:8180/auth/realms/demo/protocol/openid-connect/token`TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'`

    此時,如果您回顯$ TOKEN ,它將輸出從KC服務器獲得的令牌字符串,該令牌字符串現在可用于授權對遠程端點的進一步調用。 例如,如果要檢查內部jBPM存儲庫:

    curl -H "Authorization: bearer $TOKEN" http://localhost:8080/kie-wb-6.4.0.Final/rest/repositories

    翻譯自: https://www.javacodegeeks.com/2016/03/keycloak-sso-integration-jbpm-drools-workbench.html

    總結

    以上是生活随笔為你收集整理的Keycloak SSO集成到jBPM和Drools Workbench中的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。