Estou escrevendo um aplicativo iOS/iPadOS para ajudar os pilotos a cumprirem suas programações mensais. Os recursos que preciso acessar são protegidos pela implementação Okta da minha empresa. Posso acessar esses recursos por meio de um navegador da web. Quando o faço, sou solicitado a informar meu nome de usuário, senha e solicitação de push. Após ser autenticado, tenho acesso aos recursos e APIs.
Qual a melhor forma de acessar esses recursos dentro do aplicativo que estou desenvolvendo?
Observe que, como meu aplicativo não é um aplicativo oficial da empresa, tive dificuldade em encontrar o departamento certo para registrá-lo. Mesmo que eu encontre a pessoa certa, não tenho certeza se ela me permitirá registrá-lo. Para esclarecer, tenho permissão para acessar os recursos protegidos.
Além disso, existem outros aplicativos de terceiros semelhantes para essa função, e seu uso é aceito pela empresa, embora não oficialmente.
No momento, estou abrindo um WKWebView para o site protegido. O usuário então autentica e eu oculto o WKWebView. Em segundo plano, acesso as APIs e recursos necessários. No entanto, isso parece muito desajeitado. Existe uma maneira melhor?
A rigor, você pode fazer duas suposições.
Você pode capturar nome de usuário e senha em seu site/página/tela (se um usuário concordar em inseri-los em seu site) e então você pode usar a API de autenticação do Okta para validar essas credenciais.
Pode haver uma política MFA envolvida no processo de autenticação do lado do Okta, então a resposta que você receber indicará isso. Minha experiência anterior mostra, no entanto, que se as credenciais forem inválidas, você não conseguirá chegar a esse ponto.
Então, a escolha neste momento é sua: decidir se você quer que seu usuário seja autenticado sem confirmar seu MFA (eu não recomendaria isso, é claro, para aplicativos de nível de produção).
Se você planeja oferecer suporte total ao MFA também, será necessário criar telas de desafio/resposta de MFA relevantes para cada método de MFA usado nas políticas de MFA da sua empresa (e-mail, telefone, OTP...)
Aqui está alguma documentação para você https://developer.okta.com/docs/reference/api/authn
Mas uma maneira melhor seria registrar seu aplicativo no Okta e usar o fluxo de autenticação OIDC regular com um ecossistema Okta SDK para Mac compatível.