App2App 登录¶
来自英国的用户可能对这种方式并不陌生,许多新型银行(neobank)都在使用 app2app 机制来授权从一个银行应用向另一个银行应用转账。
App2App 机制允许一个应用借助安装在同一设备上、且已连接到身份验证服务器的另一个应用来完成用户身份验证。这是通过通用链接(universal link)实现的,两个应用无需通过系统浏览器共享会话,也无需通过令牌存储共享刷新令牌。
说明
这是一项企业版功能,如需在您的项目中使用 App2App 流程,请通过 https://authany.com/talk-with-us 联系我们
请注意,这并不是单点登录功能。如果您是在同一品牌下提供多个应用,并希望用户在设备上的这些应用之间共享登录会话,您应该使用单点登录。以下情况应使用 App2App:
- 无法通过浏览器 Cookie 共享会话
- 无法通过公共令牌存储共享会话
App2App 登录流程演示
机制¶
一个应用可以通过打开指向另一个应用的链接来启动身份验证流程,而不使用授权端点。处理该链接的应用会验证身份验证请求,然后可以返回一个有效的授权码。该有效授权码随后通过通用链接传递给最初发起请求的应用。发起方应用可以使用这个授权码向 Authany 发起代码交换以获取令牌。

iOS 上的 App2App 流程
关于该技术的详细说明,可参阅这份规范文档。
在 Authany 中进行设置¶
说明
这是一项企业版功能,如需在您的项目中启用 App2App 流程,请通过 https://authany.com/talk-with-us 联系我们
在授权方应用中进行配置¶
- 进入授权方应用(即处理 app2app 身份验证请求的应用)的应用详情页。
- 滚动到页面底部,您会看到 App2App 配置面板。
- 选择「为此应用启用 App2App 登录」

- 迁移模式提供了一种安全性较低的机制,用于帮助较旧的用户会话参与 App2App。除非存在迁移问题,否则请勿启用该选项。
在发起方应用中进行配置¶
- 进入发起方应用(即发起 app2app 身份验证请求的应用)的应用详情页。
- 在重定向 URI 中,应设置一个能够打开该应用的通用链接。
设置这些应用¶
- 为两个应用分别定义并设置通用链接,例如:
https://a.example.com/authorize应打开授权方应用(App A)https://b.example.com/redirect应打开发起方应用(App B)- 在 App B 中,调用
startApp2AppAuthentication(options: App2AppAuthenticateOptions)来发起 app2app 登录 App2AppAuthenticateOptions.authorizationEndpoint应为指向 App A 的通用链接 URL,即https://a.example.com/authorizeApp2AppAuthenticateOptions.redirectUri应为授权方应用返回身份验证结果所用的 URI,必须是能打开当前应用的通用链接,即https://b.example.com/redirect- 在 App A 中,收到 app2app 登录请求后
- 调用
parseApp2AppAuthenticationRequest(url: URL): App2AppAuthenticateRequest? - 如果该 URL 不是有效的 app2app 请求,返回结果将为
null。 - 您可以在 App A 中批准或拒绝该 app2app 请求
- 批准:
approveApp2AppAuthenticationRequest(request: App2AppAuthenticateRequest)- 批准一个 app2app 请求,并通过重定向 URI 返回结果。
request应为parseApp2AppAuthenticationRequest的返回值。- 此方法必须在 SDK 会话状态为
AUTHENTICATED,且当前会话已通过提供device_key支持 app2app 身份验证时调用,否则将抛出错误。
- 拒绝:
rejectApp2AppAuthenticationRequest(request: App2AppAuthenticateRequest, error: Error)- 拒绝一个 app2app 请求,并通过重定向 URI 返回错误。
request应为parseApp2AppAuthenticationRequest的返回值。error为拒绝该请求的原因。
- 返回 App B 后,调用
handleApp2AppAuthenticationResult(url: URL) - 该方法应由发起 app2app 身份验证流程的应用调用;当通过通用链接收到结果时,
url应为收到的通用链接 URL。