準(zhǔn)備需要:
docker最新版,camunda官方建議使用容器且最好能使用k8s,而且jar包啟動(dòng)失敗時(shí)不能停止
mysql8.0+,keycloak默認(rèn)使用postgresql,我不會(huì)
提前啟動(dòng)好其他組件,es,tasklis,operate,zeebe,偷個(gè)懶,我使用的jar包運(yùn)行,也可以容器
組件下載地址,版本8.3.4
因?yàn)槿萜魍ㄐ诺膯?wèn)題(應(yīng)該是通信/網(wǎng)絡(luò)的問(wèn)題),我使用了局域網(wǎng)ip,而非localhost
identity是什么?
Identity是Camunda8部署負(fù)責(zé)身份驗(yàn)證和授權(quán)的標(biāo)識(shí)組件,可以管理的有:
- Applications
- APIs
- Permissions
- Roles
Identity不是comunda8必要的6個(gè)組件(官網(wǎng)列出來(lái)的,但是如果使用Self-Managed也那就是8個(gè)組件),我搭建身份認(rèn)證系統(tǒng)是因?yàn)槭褂胾ser-service創(chuàng)建表單時(shí)看到了用戶授權(quán)的字段
什么是keycloak?
keycloak是一款開(kāi)源的功能豐富、易用且靈活的身份和訪問(wèn)管理軟件,為開(kāi)發(fā)人員提供了快速集成身份認(rèn)證、授權(quán)和用戶管理的解決方案
特點(diǎn)和功能
- 單點(diǎn)登錄(Single Sign-On,SSO):Keycloak支持SSO,用戶只需登錄一次,即可訪問(wèn)多個(gè)通過(guò)Keycloak保護(hù)的應(yīng)用程序。
- 集中式身份認(rèn)證和授權(quán):Keycloak充當(dāng)一個(gè)認(rèn)證和授權(quán)服務(wù)器,負(fù)責(zé)在不同應(yīng)用程序間驗(yàn)證用戶身份和授權(quán)訪問(wèn)權(quán)限。
- 多種身份驗(yàn)證方式:Keycloak支持多種身份驗(yàn)證方式,如用戶名/密碼、LDAP、Active Directory、社交登錄(Google、Facebook等)、OpenID Connect等。
- 用戶管理和組織結(jié)構(gòu):Keycloak提供了用戶管理和組織結(jié)構(gòu)管理功能,包括用戶創(chuàng)建、更新、刪除,以及組織結(jié)構(gòu)的定義和管理。
- 多因素身份驗(yàn)證(Multi-Factor Authentication,MFA):Keycloak支持多因素身份驗(yàn)證,增加了額外的安全層,如短信驗(yàn)證碼、電子郵件驗(yàn)證碼等。
- 客戶端適配器:Keycloak提供了各種客戶端適配器,使得應(yīng)用程序能夠與Keycloak進(jìn)行無(wú)縫集成,實(shí)現(xiàn)身份認(rèn)證和授權(quán)。
- 客戶端角色和權(quán)限管理:Keycloak允許定義和管理客戶端角色和權(quán)限,精確控制用戶對(duì)特定資源的訪問(wèn)權(quán)限。
- 基于標(biāo)準(zhǔn)的協(xié)議支持:Keycloak支持OpenID Connect、OAuth 2.0、SAML2.0等開(kāi)放標(biāo)準(zhǔn)協(xié)議,與其他標(biāo)準(zhǔn)兼容的應(yīng)用程序進(jìn)行集成。
準(zhǔn)備需要
camunda8版本對(duì)照,要求keycloak為21.x, 22.x,我用過(guò)的版本為22.0.5
keycloak版本要求22.0.5,對(duì)應(yīng)數(shù)據(jù)庫(kù)版本,mysql8.0
開(kāi)始集成
keyclock
-
拉取keycloak鏡像
docker pull keycloak/keycloak:22.0.5
-
創(chuàng)建數(shù)據(jù)庫(kù)
這里要注意,我使用的是mysql,因?yàn)樽址团判蛞?guī)則的問(wèn)題,需要設(shè)置為utf8/utf8_unicode_ci,否則會(huì)因?yàn)?行"字段長(zhǎng)度過(guò)長(zhǎng),注意,是"行"字段長(zhǎng)度問(wèn)題
不需要?jiǎng)?chuàng)建表,keycloak第一次啟動(dòng)時(shí)會(huì)自己創(chuàng)建表 -
啟動(dòng)命令
docker run -d -p 18080:8080 \ --name keycloak -p 18443:8443 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ -e KC_HTTP_PORT=8080 \ -e KEYCLOAK_DATABASE_VENDOR=mysql \ -e KC_DB=mysql \ -e KC_DB_DRIVER=com.mysql.cj.jdbc.Driver \ -e KC_TRANSACTION_XA_ENABLED=false \ -e KC_DB_USERNAME=root \ -e KC_DB_PASSWORD=12345678 \ -e KC_DB_URL='jdbc:mysql://192.168.2.205:3306/keycloak?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&autoReconnect=true' \ keycloak/keycloak:22.0.5 start-dev \
-
注意事項(xiàng)
18080是對(duì)外暴露的端口,給identity使用
然后默認(rèn)管理員密碼
設(shè)置mysql數(shù)據(jù)庫(kù),驅(qū)動(dòng),關(guān)閉 XA 事務(wù)(分布式事務(wù))數(shù)據(jù)庫(kù)配置鏈接
https://www.keycloak.org/server/db -
配置權(quán)限
camunda添加已存在keycloak服務(wù)的地址
https://docs.camunda.io/docs/self-managed/identity/user-guide/configuration/connect-to-an-existing-keycloak/
說(shuō)明一下,identity官網(wǎng)的配置有問(wèn)題,只能作為參考-
首先創(chuàng)建一個(gè)名為camunda-platform的realm,realm可以看做是機(jī)構(gòu)或者"工作空間"
-
創(chuàng)建名為camunda-identity的client,下一步
-
啟用Client authentication,選擇 Service accounts roles,下一步
-
配置root url,也就是identity的地址,保存
就配置一個(gè)就可以了,其他信息會(huì)有默認(rèn)信息的,等到identity啟動(dòng)后會(huì)創(chuàng)建一些列的權(quán)限和配置 -
選擇Service account roles選項(xiàng)卡,點(diǎn)擊Assign role ,在彈窗中修改Fileter by roles為Filter by clients,選中manage-realm,manage-users,manage-clients, 點(diǎn)擊Assign
-
點(diǎn)擊Credentials,復(fù)制保存IDENTITY_CLIENT_SECRET,在下邊啟動(dòng)identity使用
坑人的部分來(lái)了,官網(wǎng)沒(méi)有提到的地方,這個(gè)步驟可以在identity啟動(dòng)后設(shè)置 -
創(chuàng)建用戶,這個(gè)是作為identity的管理用戶,否則啟動(dòng)identity后沒(méi)有用戶進(jìn)入不了
我默認(rèn)為camunda了,選擇role mapping選項(xiàng)卡,根據(jù)client分配角色
這里有個(gè)問(wèn)題,可能有的權(quán)限還沒(méi)有,這個(gè)可以在identity啟動(dòng)后再設(shè)置 -
添加identity providers(這個(gè)也是沒(méi)有提到的地方)
選擇Keycloak OpenID Connect 或者OpenID Connect Discovery endpoint: http://192.168.2.106:18080/realms/camunda-platform/.well-known/openid-configuration Client ID: camunda-identity Client Secret: 這個(gè)就是上邊保存的秘鑰
-
identity
-
拉取鏡像
默認(rèn)最新版,或者自己指定版本也行 docker pull camunda/identity
這里默認(rèn)其他camundaz組件都是按照官方配置默認(rèn)接口啟動(dòng)的
-
變量配置
官方啟動(dòng)配置變量
https://docs.camunda.io/docs/self-managed/identity/deployment/configuration-variables/
這里要注意三個(gè)變量值,官網(wǎng)提供的有問(wèn)題,沒(méi)有/auth
KEYCLOAK_URL
IDENTITY_AUTH_PROVIDER_BACKEND_URL
IDENTITY_AUTH_PROVIDER_ISSUER_URL -
啟動(dòng)命令
docker run -d --name camunda-identity1 \ -p 8080:8080 camunda/identity \ java -jar /app/identity.jar \ --KEYCLOAK_URL=http://192.168.2.106:18080 \ --KEYCLOAK_REALM=camunda-platform \ --KEYCLOAK_SETUP_CLIENT_ID=camunda-identity \ --KEYCLOAK_SETUP_REALM=master \ --KEYCLOAK_SETUP_USER=admin \ --KEYCLOAK_SETUP_PASSWORD=admin \ --IDENTITY_CLIENT_ID=camunda-identity \ --IDENTITY_CLIENT_SECRET=3fZ15uFCODaMTiZbUx7vNfqz7FO6oDCV \ --IDENTITY_DATABASE_HOST=192.168.2.205 \ --IDENTITY_DATABASE_PORT=3306 \ --IDENTITY_DATABASE_NAME=keycloak \ --IDENTITY_DATABASE_USERNAME=root \ --IDENTITY_DATABASE_PASSWORD=12345678 --IDENTITY_AUTH_PROVIDER_BACKEND_URL=http://192.168.2.106:18080/realms/camunda-platform \ --IDENTITY_AUTH_PROVIDER_ISSUER_URL=http://192.168.2.106:18080/realms/camunda-platform \ --IDENTITY_URL=http://192.168.2.106:8080
注意:
KEYCLOAK_REALM, 這個(gè)是realm的名字
IDENTITY_CLIENT_ID, 這個(gè)是client的名字
IDENTITY_CLIENT_SECRET, 這個(gè)是上邊的秘鑰
IDENTITY_AUTH_PROVIDER_BACKEND_URL官方 -
搞定
訪問(wèn)identity,輸入賬號(hào)密碼就好了,如果這里登錄提示沒(méi)有賬號(hào)或密碼,那就是上邊的權(quán)限沒(méi)配好,重新創(chuàng)建一個(gè)用戶就好了
題外話
可以看看bitnami/keycloak,我一開(kāi)始配置的有問(wèn)題,一直以為是bitnami的問(wèn)題文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-804603.html
相關(guān)地址:
docker地址
https://hub.docker.com/r/keycloak/keycloak
github地址
https://github.com/bitnami/containers/tree/main/bitnami/keycloak
keycloak官網(wǎng)數(shù)據(jù)庫(kù)配置
https://www.keycloak.org/server/db
keycloak啟動(dòng)docker
https://www.keycloak.org/getting-started/getting-started-docker
identity地址
https://docs.camunda.io/docs/self-managed/identity/what-is-identity/
identity添加keycloak獨(dú)立服務(wù)
https://docs.camunda.io/docs/self-managed/identity/user-guide/configuration/connect-to-an-existing-keycloak/文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-804603.html
到了這里,關(guān)于Camunda8微服務(wù)流程引擎搭建實(shí)戰(zhàn) -- camunda-identity接入keycloak,使用mysql數(shù)據(jù)庫(kù)以O(shè)penID Connect的方式實(shí)現(xiàn)用戶的權(quán)限管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!