OpenStack的各個(gè)服務(wù)組件都有提供相應(yīng)的API接口每聪,如nova-api,gance-api等等曲聂。使用這些 API和擴(kuò)展可以讓用戶在OpenStack云中進(jìn)行一系列的操作移宅,如啟動(dòng)服務(wù)主機(jī),創(chuàng)建鏡像共螺,給主機(jī)和鏡像設(shè)置元數(shù)據(jù),創(chuàng)建容器和對(duì)象等等情竹。
但在調(diào)用任何組件的API前藐不,必須通過Identity API進(jìn)行鑒權(quán)。
Identity Service
Identity Service 具備的功能:
??Tracking users and their permissions.
? Providing a catalog of available services with their API endpoints
開始我認(rèn)為是進(jìn)行用戶身份權(quán)限驗(yàn)證的服務(wù)秦效,但是后來發(fā)現(xiàn)它只是進(jìn)行用戶授權(quán)雏蛮。
為了方便管理,它抽象出了一組概念:
User | Credentials | Authentication | Token | Tenant | Service | Endpoint | Role | Keystone Client
具體對(duì)這些概念的說明阱州,參見
http://docs.openstack.org/juno/install-guide/install/apt/content/keystone-concepts.html
http://www.cnblogs.com/yuki-lau/archive/2013/01/04/2843918.html
下圖是一個(gè)權(quán)限驗(yàn)證的過程:
1. 用戶想要?jiǎng)?chuàng)建一個(gè)服務(wù)器挑秉。首先用戶要提供自己的認(rèn)證信息(可能是用戶名和密碼,或者是用戶名和API key)苔货,然后keystone提供一個(gè)臨時(shí)的token和一個(gè)服務(wù)列表(serviceCatalog)
2. 用戶使用臨時(shí)的token請(qǐng)求他所有的Tenant信息(可以理解為一些資源)犀概,keystone返回Tenants 列表立哑。
3. Keystone 提供用戶目標(biāo)Tenant里面的服務(wù)列表。用戶用自己的鑒權(quán)信息獲得目標(biāo)Tenant的token和服務(wù)列表姻灶,然后使用tenant token和指定服務(wù)的endpoint(可以理解為具體的API)信息去啟動(dòng)服務(wù)器铛绰。
4. 該服務(wù)去和keystone驗(yàn)證該token是否正確。
5. Keystone返回這個(gè)token的相關(guān)信息:用戶獲得鑒權(quán)被允許訪問這個(gè)服務(wù)产喉;token和這個(gè)請(qǐng)求相符至耻;token屬于這個(gè)用戶。
6. 服務(wù)執(zhí)行該請(qǐng)求(創(chuàng)建服務(wù)器)镊叁。
7. 執(zhí)行完成后返回結(jié)果尘颓。
OpenStack中調(diào)用任何API,在執(zhí)行請(qǐng)求前都要經(jīng)過keystone認(rèn)證晦譬,下圖說明了keystone和其他各個(gè)服務(wù)組件的關(guān)系:
API調(diào)用方式
OpenStack提供了多種API調(diào)用的方式疤苹,參見http://docs.openstack.org/api/quick-start/content/ ,有
cURL
OpenStack命令行客戶端
REST客戶端
軟件開發(fā)工具包(SDK)
Identity API
Identity API是一個(gè)ReSTful web service敛腌,是所有service APIs的入口卧土。要訪問Identity API,你必須知道它的URL和訪問方式像樊。默認(rèn)Identity的服務(wù)端口為5000尤莺,具體可以查詢keystone中對(duì)各個(gè)服務(wù)的endpoint的設(shè)置。下面介紹一些API的具體內(nèi)容
請(qǐng)求認(rèn)證并生成token的API:
method: 'POST' ? ? URL : '/v2.0/tokens'
每個(gè)ReST請(qǐng)求需要有X-Auth-Token 作為header生棍。
認(rèn)證時(shí)颤霎,需要提供user ID和密碼或者是一個(gè)token。
如果token過期涂滴,會(huì)返回一個(gè)401
如果是請(qǐng)求中的token過期友酱,會(huì)返回404
Identity將過期token視為無效token。
部署時(shí)可以指定token的過期時(shí)間
正常返回碼:200柔纵,203
錯(cuò)誤返回碼:identityFault (400, 500, …), userDisabled (403), badRequest (400), unauthorized (401), forbidden (403), badMethod (405), overLimit (413), serviceUnavailable (503), itemNotFound (404)
所有的API提供json和xml兩種格式
可以訪問http://developer.openstack.org/api-ref.html 官方文檔獲取更具體的內(nèi)容缔杉。