身份认证

未匹配的标注

验证和授权

内容目录

  1. 规则

Micro (M3O 也一样) 具备可以微调身份验证和授权的功能. 本教程假设你已经登录了. 对 M3O 来说登陆过意味着你已经注册过, 对本地 micro server 来说意味着你已经用 id admin 和密码 micro 执行过 micro login 命令:

$ micro login
Enter email address: admin
Enter Password: 
Successfully logged in.

规则

规则确定一个用户可以访问哪些资源. 默认规则如下:

$ micro auth list rules
ID          Scope           Access      Resource        Priority
default     <public>        GRANTED     *:*:*           0

默认规则 default 可以调用 micro status 输出的所有服务. 举个栗子.

$ micro run helloworld
$ namespace=$(mico user namespace)
$ curl -H "Micro-Namespace: $namespace" https://api.m3o.com/helloworld
# Locally:
# curl 127.0.0.1:8080/helloworld/call?name=Alice
{"msg":"Hello Alice"}

如果我们想阻止其他人调用我们的服务, 可以添加如下规则:

# 此命令创建了一个规则, 仅允许登录后的用户可以调用 `micro server`
micro auth create rule  --access=granted --scope='*' --resource="*:*:*" onlyloggedin

并且删除了默认的那项规则. 这里的作用域 * 与我们之前执行 micro auth list rules 看到的作用域 <public> 明显不同:

$ micro auth list rules
ID                Scope            Access        Resource        Priority
onlyloggedin    *                GRANTED        *:*:*            0
default            <public>        GRANTED        *:*:*            0

现在, 我们来删除默认规则.

# 此命令删除了 `default` 规则 - 该规则运行任何人调用 `micro server`.
$ micro auth delete rule default
Rule deleted

我们再来试试请求我们的服务:

$ micro run helloworld
$ namespace=$(mico user namespace)
$ curl -H "Micro-Namespace: $namespace" https://api.m3o.com/helloworld
# Locally:
# curl 127.0.0.1:8080/helloworld/call?name=Alice
{"Id":"helloworld","Code":401,"Detail":"Unauthorized call made to helloworld:Helloworld.Call","Status":"Unauthorized"}

非常好! 这意味着我们的 `onlyloggedin` 规则生效了. 我们可以携带令牌继续调用服务:

$ micro run helloworld $ token=$(micro user token) $ curl -H “Micro-Namespace: $namespace” “Authorization: Bearer $token” https://api.m3o.com/helloworld

# Locally:
# curl “Authorization: Bearer $token” 127.0.0.1:8080/helloworld/call?name=Alice
{“msg”:”Hello Alice”}

(请注意令牌的生命周期有限, 所以需要时不时使用命令 $ token=$(micro user token) 重新获取有效的令牌, 或者直接把此命令内联起来.)

这些都是验证非常基础的内容. 请不时回来查看更多内容更新!


本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~