正文
OpenDaylight安全功能由AAA项目提供,该机制提供的功能有:
-
认证:用于认证用户
-
授权:给用户访问资源的权限
-
计费:记录用户访问的资源
默认情况下,当你安装任何特性,AAA认证就会安装。默认提供两个用户:
-
用户admin,密码admin
-
用户user,密码user
这个方法不需要OpenDaylight以外的东西。
样例代码放在:
https://github.com/jgoodyear/OpenDaylightCookbook/tree/master/chapter1/chapter1-recipe7
1.使用karaf脚本启动OpenDaylight karaf发行版本。使用这个脚本你可以访问到karaf CLI。
$ ./bin/karaf
2.安装面向用户的特性功能以及所有依赖,开启用户认证
OpenDaylight-user@root>feature:install odl-aaa-authn
3.检索已经存在的用户列表
type: GET
headers:
Authorization: Basic YWRtaW46YWRtaW4=
url: http://localhost:8181/auth/v1/users
{
"users":
[
{
"userid": "admin@sdn",
"name": "admin",
"description": "admin user",
"enabled": true,
"email": "",
"password": "**********",
"salt": "**********",
"domainid": "sdn"
},
{
"userid": "user@sdn",
"name": "user",
"description": "user user",
"enabled": true,
"email": "",
"password": "**********",
"salt": "**********",
"domainid": "sdn"
}
]
}
4.更新用户配置
更新用户的密码,使用以下请求:
type: PUT
headers:
Authorization: Basic YWRtaW46YWRtaW4=
这是基本的admin/admin认证,我们可以修改它
Payload:
{
"userid": "user@sdn",
"name": "user",
"description": "user user",
"enabled": true,
"email": "",
"password": "newpassword",
"domainid": "sdn"
}
url: http://localhost:8181/auth/v1/users/user@sdn
5.试一下新的用户密码。打开浏览器并访问http://localhost:8181/auth/v1/users,可以请求认证。使用:
username: user
password: newpassword
你可以使用新密码登入了。
AAA项目支持基于Apache Shiro系统的角色访问控制协议(RBAC)。它定义了一个REST应用用于交互h2数据库。每个数据库表拥有独立的REST endpoint,通过使用REST CLI修改h2数据库中的内容,比如用户信息。