ORY Hydra,Vapor 3和iOS 12的OAuth2实现
第4部分:使用AppAuth在iOS上设置OAuth2授权
关于使用ORY Hydra,Vapor和iOS设置OAuth2的系列教程的这一部分将重点介绍构建iOS客户端。 如果用户成功登录,它将是一个非常简单的应用程序,仅显示一个用于创建帐户的按钮并切换到成功消息。我们将使用一个名为AppAuth的库与我们的授权服务器进行交互。
教程系列
第1部分:ORY Hydra授权服务器的介绍和设置
第2部分:Vapor后端中的用户管理
第3部分:将Vapor后端设置为ORY Hydra的身份提供者
第4部分:使用AppAuth在iOS上设置OAuth2授权(您在此处)
先决条件
您应该检出上面列出的系列的先前部分。
创建iOS Xcode项目
打开Xcode或您选择的编辑器,然后创建一个新的Single View应用程序。 已经为您提供了ViewController.swift
类,其视图已在情节提要中配置。
打开情节ViewController
,然后在ViewController
上添加一个按钮,以触发身份验证流程。 然后添加带有成功消息的隐藏标签,在用户成功登录后,我们可以显示该标签。
接下来,打开ViewController.swift
文件,并拖动其中两个按钮的插座,以及一个按钮操作的插座。 调用该函数authorize
。
另外,我们需要允许该应用处理非SSL URL。 为此,我们需要在Info.plist
添加另一个名为App Transport Security Settings
条目:
触发授权请求
创建授权请求后,我们现在需要实际触发该请求。 我们可以使用AppAuth
提供的便利功能来创建一个新的OIDExternalUserAgentSession
,并将其保存在AuthService
。 将此行添加到我们的AuthService
的顶部:
然后修改authorize
看起来像这样:
首先,我们将函数的签名更改为采用UIViewController以及成功和错误情况的回调。 然后,通过使用之前创建的请求创建新的授权会话来触发授权请求。
创建授权会话后,我们将收到OIDAuthState
对象或错误。 OIDAuthState
是OIDAuthState
提供的便利类,其中包含有关用户授权状态的所有相关信息。
返回到ViewController
并在点击创建帐户按钮时调用此函数。
我们创建了AuthService
的实例,并在按钮点击时调用authorize
。 如果我们可以成功授权用户,则显示成功消息而不是按钮。
iOS部分就是这样。
测试我们的设置
现在,我们开发了实现OAuth2授权所需的所有三个部分。 为了能够对其进行测试,我们需要启动Hydra服务器,运行后端并运行iOS客户端。
- 启动Hydra Server:回顾第1部分,并按照以下步骤启动Hydra Server并创建客户端
- 在Xcode中运行后端:只需在Xcode中启动Vapor后端的运行配置
- 在Xcode中运行iOS客户端:同样在这里,只需在Xcode中运行默认方案
在您的iOS模拟器中,您现在应该看到带有创建帐户按钮的白屏。 如果单击它,则应将您重定向到显示登录UI的Web浏览器。 尝试注册用户,然后查看成功消息。 您可以在第1部分的开头查看简短视频,以查看预期结果。
恭喜! 您已经完成了所有工作,并使用ORY Hydra,Vapor和iOS实现了自己的授权代码流程。
前景展望
我们计划为本教程编写有关使用ORY Oathkeeper进行用户授权的后续部分,并准备好整个安装过程。
如果您对本教程或评论有任何疑问,请随时通过我们的网站与我们联系!
进一步阅读
AppAuth文档
https://github.com/openid/AppAuth-iOS
OAuth2手机版
https://www.ory.sh/oauth2-for-mobile-app-spa-browser
资源资源
您可以在Github上找到本教程完全实现的iOS应用!
保持更新
如果您喜欢本教程,并且对我们的其他文章感兴趣,请在此处或在Twitter上关注我们,并查看我们的网站!