OKTA用户认证不支持IOS13.X后采用WEB方式支持APP

一家密码管理的独角兽公司,据说还在谋求上市。竟然说要2020年2月份才会有可能支持IOS13.X的版本,那么已经升级到13.X的IOS用户怎么办?真是无语。。。

正好有个项目,用户原本就采用了OKTA的密码管理方式,怎么办?用户也不知道到底是谁的问题,只能采用折中的方式。

我们采用的大概思路是利用OKTA的web方式接口,在IOS端用户登陆的时候,通过服务器返回一个url,访问OKTA的登陆网站,在OKTA网站里输入账号密码,随后OKTA会callback给服务器参数,服务器把参数通过WEBVIEW送给IOS客户端,完成登陆过程。

1.先建立基本的测试数据

登陆okta的网站

2.进入APPLICATION的界面,设置一些必要的参数如callback_url,logout_url等。其中需要得到该页面中的clientId ,clientSecret值,需要在我们自己的服务器里设置。

3.可以增加用户,用作测试

基本的数据做好了,就要做服务器开发了。我们采用的是PHP的代码

这里大概介绍几个主要方法:

1.生成获取CODE的URL,返回给IOS客户端,让IOS客户端建立一个WEBVIEW去访问

2.当Okta接收到IOS客户端发送的请求后,会返回参数给预先设置的callback,此时再调用认证方法,去获取所需要的用户信息,我们项目需要的是email

3.拿到参数后,进行自己平台的业务即可。大功告成。

因为采用的是WEB的方式,那么在OKTA的网站里会保存着SESSION,如果你的IOS客户端用户LOGOUT了,再次登陆的时候,会造成直接登陆成功,而没有输入账号密码的情况。

我们在这个问题上,采用的方式是,让IOS再次打开一个隐藏的WEBVIEW,访问上面第一个方法里返回的logout_url即可。

到此已经完美解决了。

等待2020年2月份支持IOS13.X的接口出现,就改回IOS专用接口。


分享到:


相關文章: