Skip to content
王伟兵 edited this page Sep 29, 2016 · 25 revisions

stormpath的官方文档很慢,这个文档勉强参考吧。

租户注册

通过租户注册界面,录入邮箱和密码,提交后系统会:

  1. 创建一个租户(tenant)
  2. 创建一个租户下的默认管理员目录(directory):iam_admin
  3. 在IAM-Admin目录下使用界面录入的邮箱和密码创建了一个用户(account)

获取apikey

  1. 通过登录界面输入租户id、用户id、密码登录系统
  2. 进入apikey管理界面,可查看、禁用、删除、新建apikey
  3. 新建一个apikey,包括apikey-id和apikey-secret,提示用户保存好apikey
  4. 系统保存apikey

下文使用变量$IAM_APIKEY_ID表示apikey id,变量$IAM_APIKEY_SECRET表示apikey secret。

export是linux设置环境变量的命令,curl是常用的http调试工具。

使用apikey获取租户内码(测试apikey)

$ export IAM_APIKEY_ID=xxxx IAM_APIKEY_SECRET=xxxxx
$ curl -u $IAM_APIKEY_ID:$IAM_APIKEY_SECRET \
"https://dev.imaicloud.com/iam/api/v1/tenants/current"

输出是个json串,可以用jq工具输出格式化json(安装命令是apt-get install jq),即:

$ curl -u $IAM_APIKEY_ID:$IAM_APIKEY_SECRET \
"https://dev.imaicloud.com/iam/api/v1/tenants/current" | jq .

-u是--user的简写,表示http基础认证。 IAM的资源都是挂在租户下的,所以往往要先获取租户内码。通过上面的API可以得到租户内码,然后可以把租户内码设置为环境变量,以便后续的测试:

$ export TENANT_ID="XXX"

还有一种用curl -H参数表示http基础认证的方式,与-u参数执行结果是一样的,如:

$ curl -H "Authorization: Basic cGxNOHgyMDE2N0VxYW5pQkZvYUswUTpqN1VuMG9YOTQ3akdjNzZCRXRRa2NyZlduNHZCdTV1bWZRRUovc0NwZ0RB" "https://dev.imaicloud.com/iam/api/v1/tenants/current"

查询租户下的目录

/v1/tenants/$TENANT_ID/directories

$ export IAM_APIKEY_ID=xxxx IAM_APIKEY_SECRET=xxxxx TENANT_ID=1gBTncWsp2ObQGgeXAMPLE
$ curl -u $IAM_APIKEY_ID:$IAM_APIKEY_SECRET \
"https://dev.imaicloud.com/iam/api/v1/tenants/$TENANT_ID/directories"

创建目录(directory)

POST /v1/directoris

IAM租户注册时默认创建的是管理员目录,管理员目录名是约定的,不能改。

普通用户最好不用保存在管理员目录下,这就需要手工创建目录。

$ curl -u $IAM_APIKEY_ID:$IAM_APIKEY_SECRET \
-H 'Content-Type: application/json' -XPOST https://dev.imaicloud.com/iam/api/v1/directories \
-d '{ "description":"客户目录",   "type":"cloud",  "status":"enabled",  "name":"customer" }'

查询目录下的账号

GET /v1/directoris/$DIRECTORY_ID/accounts

$ export IAM_APIKEY_ID=xxxx IAM_APIKEY_SECRET=xxxxx
$ curl -i -u $IAM_APIKEY_ID:$IAM_APIKEY_SECRET \
"https://dev.imaicloud.com/iam/api/v1/directoris/$DIRECTORY/accounts"

创建用户

POST v1/directories/$DIRECTORY_ID/accounts

必须通过URL指定创建用户所在的目录。iam_admin是管理员目录,其他的是自定义目录。创建在iam_admin下的用户自动成为管理员。

$ export IAM_APIKEY_ID=xxxx IAM_APIKEY_SECRET=xxxxx DIRECTORY_ID=customer
$ curl -u $IAM_APIKEY_ID:$IAM_APIKEY_SECRET \
-H 'Content-Type: application/json' -XPOST https://dev.imaicloud.com/iam/api/v1/directories/$DIRECTORY_ID/accounts \
-d '{ "email":"[email protected]",   "password":"123",  "status":"enabled",  "username":"wbwang" }'

登录请求

POST /v1/tenants/$TENANT_ID/loginAttempts
POST /v1/directories/$DIRECTORY_ID/loginAttempts

上述两个API的差异在于,前者会遍历租户下的所有目录,直到用户名口令匹配,而后者只检查指定目录下是否有符合的用户名口令。

查询目录下的用户组

GET /v1/directories/$DIRECTORY_ID/groups

创建用户组

POST /v1/directories/$DIRECTORY_ID/groups

定制数据维护

GET /v1/$RESOURCE_TYPE/$RESOURCE_ID/customData
POST /v1/$RESOURCE_TYPE/$RESOURCE_ID/customData

$RESOURCE_TYPE可能是租户tenants、目录directories、组groups、账号accounts。 例如,获取某账号的定制数据:

GET /v1/accounts/$RESOURCE_ID/customData

$ export IAM_APIKEY_ID=xxxx IAM_APIKEY_SECRET=xxxxx RESOURCE_ID=xxxx(账号内码)
$ curl -i -u $IAM_APIKEY_ID:$IAM_APIKEY_SECRET \
"https://dev.imaicloud.com/iam/api/v1/accounts/$RESOURCE_ID/customData"
Clone this wiki locally