[英]PEP proxy config file for integration of IDM GE, PEP proxy and Cosmos big data
我有一個關於PEP代理文件的問題。 我的keystone服務運行在192.168.4.33:5000。 我的視界服務運行在192.168.4.33:443。
我的WebHDFS服務運行在192.168.4.180:50070,我打算在192.168.4.180:80上運行PEP代理
但我沒有得到的是我應該用什么代替config.account_host? 在keyrock管理器的mysql數據庫里面有“idm”用戶,帶有“idm”密碼,我在Identity Manager上通過curl發出的每個請求都有效。
但是使用這個配置:
config.account_host = 'https://192.168.4.33:443';
config.keystone_host = '192.168.4.33';
config.keystone_port = 5000;
config.app_host = '192.168.4.180';
config.app_port = '50070';
config.username = 'idm';
config.password = 'idm';
當我啟動pep-proxy時:
sudo node server.js
我得到下一個錯誤:
Starting PEP proxy in port 80. Keystone authentication ...
Error in keystone communication {"error": {"message": "The request you
have made requires authentication.", "code": 401, "title":
"Unauthorized"}}
首先,我不會在config.account_host
鍵入端口,因為在那里不需要它,但這不會干擾操作。
我猜測您使用自己的KeyRock FIWARE Identity Manager和默認的角色配置。
如果您檢查代碼,PEP代理會發送針對KeyRock的Domain Scoped請求 ,如Keystone v3 API中所示 。
所以問題是,您用來驗證PEP的idm
用戶可能沒有任何域角色。 檢查它的解決方法是:
嘗試Domain Scoped
請求:
curl -i \\ -H "Content-Type: application/json" \\ -d ' { "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "idm", "domain": { "id": "default" }, "password": "idm" } } }, "scope": { "domain": { "id": "default" } } } }' \\ http://192.168.4.33:5000/v3/auth/tokens ; echo
如果您獲得401
代碼,則無權進行Domain Scoped
請求。
檢查用戶是否在此域中具有任何角色。 為此,您需要使用默認范圍請求獲取Auth令牌:
curl -i -H "Content-Type: application/json" -d ' { "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "idm", "domain": { "id": "default" }, "password": "idm" } } } } }' http://192.168.4.33:5000/v3/auth/tokens ; echo
這將返回解決方法所需的X-Subject-Token
。
使用該令牌,我們將使用我們之前選擇的用戶idm
向default
域發送請求,以檢查我們是否已在其中分配了任何角色:
curl -i \\ -H "X-Auth-Token:<retrieved_token>" \\ -H "Content-type: application/json" \\ http://192.168.4.33:5000/v3/domains/default/users/idm/roles
也許,這個請求會給你一個像:
{"links": {"self": "http://192.168.4.33:5000/v3/domains/default/users/idm/roles", "previous": null, "next": null}, "roles": []}
在這種情況下,您需要為該用戶創建一個角色。 要創建它,您需要在default
域中為用戶idm
分配role
。 為此,您需要檢索要分配的role
的role id
。 您可以通過發送以下請求來執行此操作:
curl -i \\ -H "X-Auth-Token:<retrieved_token>" \\ -H "Content-type: application/json" \\ http://192.168.4.33:5000/v3/roles
它將返回包含所有可用roles
及其ids
的JSON。
將role
分配給default
域中的用戶idm
。 有6個可用:成員,所有者,試用版,基本,社區和管理員。 由於idm
是主要管理員,我會選擇admin id
。 最后,使用admin id
,我們通過執行以下操作來分配角色:
curl -s -X PUT \\ -H "X-Auth-Token:<retrieved_token>" \\ -H "Content-type: application/json" \\ http://192.168.4.33:5000/v3/domains/default/users/idm/roles/<role_id>
現在您可以再次嘗試步驟1,如果一切正常,您應該能夠啟動PEP代理:
sudo node server.js
讓我知道事情的后續!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.