使用 Emacs 创建 OAuth 2.0 的 UML 序列图 | Linux 中国

Posted Linux中国

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Emacs 创建 OAuth 2.0 的 UML 序列图 | Linux 中国相关的知识,希望对你有一定的参考价值。

在审查 OAuth 2.0 实现或编写渗透测试报告时我习惯画出 UML 图。这方便让人理解发生了什么事情,并发现潜在的问题。毕竟,一图抵千言。
-- Peter Mosmans

看起来 OAuth 2.0 框架[1] 已经越来越广泛地应用于 web (和 移动) 应用。太棒了!

虽然协议本身并不复杂,但有很多的使用场景、流程和实现可供选择。正如生活中的大多数事物一样,魔鬼在于细节之中。

在审查 OAuth 2.0 实现或编写渗透测试报告时我习惯画出 UML 图。这方便让人理解发生了什么事情,并发现潜在的问题。毕竟,一图抵千言。

使用基于 GPL 开源协议 Emacs[2] 编辑器来实现,再加上基于 GPL 开源协议的工具 PlantUML[3] (也可以选择基于 Eclipse Public 协议的 Graphviz[4]) 很容易做到这一点。

Emacs 是世界上最万能的编辑器。在这种场景中,我们用它来编辑文本,并自动将文本转换成图片。PlantUML 是一个允许你用人类可读的文本来写 UML 并完成该转换的工具。Graphviz 是一个可视化的软件,这里我们可以用它来显示图片。

下载 预先编译好了的 PlantUML jar 文件 [5]Emacs[6] 还可以选择下载并安装 Graphviz[7]

安装并启动 Emacs,然后将下面 Lisp 代码(实际上是配置)写入你的启动文件中(~/.emacs.d/init.d),这段代码将会:

◈ 配置 org 模式(一种用来组织并编辑文本文件的模式)来使用 PlantUML
◈ 将  plantuml 添加到可识别的 “org-babel” 语言中(这让你可以在文本文件中执行源代码)
◈ 将 PlantUML 代码标注为安全的,从而允许执行
◈ 自动显示生成的结果图片
  
    
    
  
  1. ;; tell org-mode where to find the plantuml JAR file (specify the JAR file)
  2. (setq org-plantuml-jar-path (expand-file-name "~/plantuml.jar"))
  3. ;; use plantuml as org-babel language
  4. (org-babel-do-load-languages 'org-babel-load-languages '((plantuml . t)))
  5. ;; helper function
  6. (defun my-org-confirm-babel-evaluate (lang body)
  7. "Do not ask for confirmation to evaluate code for specified languages."
  8. (member lang '("plantuml")))
  9. ;; trust certain code as being safe
  10. (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
  11. ;; automatically show the resulting image
  12. (add-hook 'org-babel-after-execute-hook 'org-display-inline-images)

如果你还没有启动文件,那么将该代码加入到 ~/.emacs.d/init.el 文件中然后重启 Emacs。

提示:Control-c Control-f 可以让你创建/打开(新)文件。Control-x Control-s 保存文件,而 Control-x Control-c 退出 Emacs。

这就结了!

要测试该配置,可以创建/打开(Control-c Control-f)后缀为 .org 的文件,例如 test.org。这会让 Emacs 切换到 org 模式并识别 “org-babel” 语法。

输入下面代码,然后在代码中输入 Control-c Control-c 来测试是否安装正常:

  
    
    
  
  1. #+BEGIN_SRC plantuml :file test.png
  2. @startuml
  3. version
  4. @enduml
  5. #+END_SRC

一切顺利的话,你会在 Emacs 中看到文本下面显示了一张图片。

注意:

要快速插入类似 #+BEGIN_SRC 和 #+END_SRC 这样的代码片段,你可以使用内置的 Easy Templates 系统:输入 <s 然后按下 TAB,它就会自动为你插入模板。

还有更复杂的例子,下面是生成上面图片的 UML 源代码:

  
    
    
  
  1. #+BEGIN_SRC plantuml :file t:/oauth2-abstract-protocol-flow.png
  2. @startuml
  3. hide footbox
  4. title Oauth 2.0 Abstract protocol flow
  5. autonumber
  6. actor user as "resource owner (user)"
  7. box "token stays secure" #FAFAFA
  8. participant client as "client (application)"
  9. participant authorization as "authorization server"
  10. database resource as "resource server"
  11. end box
  12. group user authorizes client
  13. client -> user : request authorization
  14. note left
  15. **grant types**:
  16. # authorization code
  17. # implicit
  18. # password
  19. # client_credentials
  20. end note
  21. user --> client : authorization grant
  22. end
  23. group token is generated
  24. client -> authorization : request token\npresent authorization grant
  25. authorization --> client :var: access token
  26. note left
  27. **response types**:
  28. # code
  29. # token
  30. end note
  31. end group
  32. group resource can be accessed
  33. client -> resource : request resource\npresent token
  34. resource --> client : resource
  35. end group
  36. @enduml
  37. #+END_SRC

你难道会不喜欢 Emacs 和开源工具的多功能性吗?


via: https://www.onwebsecurity.com/configuration/use-emacs-to-create-oauth-2-0-uml-sequence-diagrams.html

本文由 LCTT 原创编译,Linux中国 荣誉推出

以上是关于使用 Emacs 创建 OAuth 2.0 的 UML 序列图 | Linux 中国的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot 2.0 整合 oauth2 SSO

使用 OAuth 2.0 客户端 ID 为不同项目创建一个或多个凭据?

使用oauth 2.0中的指纹登录

快速书籍创建客户OAuth 2.0令牌错误

如何在Android中使用Appcelerator Titanium构建Oauth 2.0

构建微服务-使用OAuth 2.0保护API接口