我正在编写一个 iOS/iPadOS 应用程序来帮助飞行员完成他们的月度计划。我需要访问的资源受我公司的 Okta 实施保护。我可以通过 Web 浏览器访问这些资源。当我这样做时,系统会提示我输入用户名、密码和推送请求。经过身份验证后,我就可以访问资源和 API。
我如何才能最好地访问我正在开发的应用程序中的这些资源?
请注意,由于我的应用不是官方公司应用,因此我很难找到合适的部门来注册它。即使我找到了合适的人,我也不确定他们会允许我注册它。需要明确的是,我有权访问受保护的资源。
此外,还有其他类似的第三方应用程序具有此功能,并且它们的使用已被公司接受 - 尽管不是正式的。
现在,我正在向受保护的网站打开一个 WKWebView。然后用户进行身份验证,我隐藏 WKWebView。在后台,我访问必要的 API 和资源。但是,这感觉很笨拙。有没有更好的方法?
严格来说,你可以做出两个假设。
您可以在您的网站/页面/屏幕上捕获用户名和密码(如果用户同意在您的网站上输入它们),然后您可以使用 Okta 身份验证 API 来验证这些凭据。
Okta 端的身份验证过程中可能涉及 MFA 策略,因此您收到的响应将表明这一点。但我以前的经验表明,如果凭证无效,您将无法到达这一点。
因此,此时您可以选择是否要在未确认 MFA 的情况下确定用户是否已通过身份验证(当然,对于生产级应用程序,我不建议这样做)。
如果您计划完全支持 MFA,则必须为公司 MFA 政策中使用的每种 MFA 方法(电子邮件、电话、OTP......)设计相关的 MFA 质询/响应屏幕。
这里有一些文档供您参考https://developer.okta.com/docs/reference/api/authn
但更好的方法是在 Okta 中注册您的应用程序,并使用受支持的 Okta SDK for Mac 生态系统的常规 OIDC 身份验证流程。