我是否应该明确不使用带有 MSAL 身份验证的标准 URL?
Should I explicitly not use a standard URL with MSAL authentication?
所有 MSAL 文档都要求我在向本地设备进行身份验证时使用 msalGUID:///
等前缀。
然后就是默认出现在MSAL portal.
中的古怪urlurn:ietf:wg:oauth:2.0:oob
由于我列出的每个 URL 本质上都有一个进入我的应用程序的后门,我想了解每个选项的安全优势。
- 我为什么要使用记录的
msalGUID://
方案?
- 我不应该使用 iOS 通用 Link / 完全限定 URL 吗?
urn:ietf:wg:oauth:2.0:oob
和 https://login.live.com/oauth20_desktop.srf
有什么好处?
- 我应该注意什么 w.r.t。与 Microsoft Authenticator 的交互,这可能取决于此?
背景
在考虑您的应用将使用的重定向 URI 时,有一些攻击媒介和可用性案例会发挥作用。
首先,您的应用是否要从未沙盒化到您的应用的授权代理登录用户。如果您使用的是 MSAL,那么答案几乎总是肯定的(除非您已明确选择使用应用内 WebView)。
要考虑的案例
如果是这样,那么您需要考虑两种情况:重定向 URI 的意外冲突(可用性问题)和恶意应用程序故意试图拦截被重定向回您的应用程序的用户(安全问题)。
案例 1:原始应用程序
为了解决前者问题,MSAL 选择了 msal<ClientID>://auth
,因为它对于每个应用注册都是唯一的。这种格式的随机性很高(urn:ietf:wg:oauth:2.0:oob
会丢失),这可以防止设备上的多个应用程序在同一 URI 上侦听并“意外”获得响应的情况。对于用户来说,这非常令人沮丧,并且会影响他们使用应用程序的体验。要总结解决此问题的最佳做法,请使用高度随机的 URI,避免与其他应用发生意外冲突。
案例 2:恶意应用
为了解决后者,MSAL 实施了 Proof Key for Code Exchange (PKCE) 协议来消除此攻击向量。扩展一下这个场景,它和上面的场景类似,除了应用程序有意捕获响应并打算代表您交换授权码。使用 PKCE,只有发起请求的应用程序才能交换授权码。
总结答案
快速回答你的弹幕,
- 以上内容。
- 如果您熟悉通用链接以及如何设置必要的步骤,这可能是验证您的应用注册是否仅供您使用的不错选择。
- 这些适用于使用应用内 WebView 的应用,在这些应用中有更强大的安全保证,因为它不会离开应用。
- MSAL 当前未集成到 Authenticator 中以完成身份验证请求。届时,应用可能需要完成与类似于 ADAL's requirements.
的重定向 URI 相关的增强注册
所有 MSAL 文档都要求我在向本地设备进行身份验证时使用 msalGUID:///
等前缀。
然后就是默认出现在MSAL portal.
中的古怪urlurn:ietf:wg:oauth:2.0:oob
由于我列出的每个 URL 本质上都有一个进入我的应用程序的后门,我想了解每个选项的安全优势。
- 我为什么要使用记录的
msalGUID://
方案? - 我不应该使用 iOS 通用 Link / 完全限定 URL 吗?
urn:ietf:wg:oauth:2.0:oob
和https://login.live.com/oauth20_desktop.srf
有什么好处?- 我应该注意什么 w.r.t。与 Microsoft Authenticator 的交互,这可能取决于此?
背景
在考虑您的应用将使用的重定向 URI 时,有一些攻击媒介和可用性案例会发挥作用。
首先,您的应用是否要从未沙盒化到您的应用的授权代理登录用户。如果您使用的是 MSAL,那么答案几乎总是肯定的(除非您已明确选择使用应用内 WebView)。
要考虑的案例
如果是这样,那么您需要考虑两种情况:重定向 URI 的意外冲突(可用性问题)和恶意应用程序故意试图拦截被重定向回您的应用程序的用户(安全问题)。
案例 1:原始应用程序
为了解决前者问题,MSAL 选择了 msal<ClientID>://auth
,因为它对于每个应用注册都是唯一的。这种格式的随机性很高(urn:ietf:wg:oauth:2.0:oob
会丢失),这可以防止设备上的多个应用程序在同一 URI 上侦听并“意外”获得响应的情况。对于用户来说,这非常令人沮丧,并且会影响他们使用应用程序的体验。要总结解决此问题的最佳做法,请使用高度随机的 URI,避免与其他应用发生意外冲突。
案例 2:恶意应用
为了解决后者,MSAL 实施了 Proof Key for Code Exchange (PKCE) 协议来消除此攻击向量。扩展一下这个场景,它和上面的场景类似,除了应用程序有意捕获响应并打算代表您交换授权码。使用 PKCE,只有发起请求的应用程序才能交换授权码。
总结答案
快速回答你的弹幕,
- 以上内容。
- 如果您熟悉通用链接以及如何设置必要的步骤,这可能是验证您的应用注册是否仅供您使用的不错选择。
- 这些适用于使用应用内 WebView 的应用,在这些应用中有更强大的安全保证,因为它不会离开应用。
- MSAL 当前未集成到 Authenticator 中以完成身份验证请求。届时,应用可能需要完成与类似于 ADAL's requirements. 的重定向 URI 相关的增强注册