Teams中的SSO
Single Sign-On,也就是常说的SSO,在很多场景下会用到,不光是微软系列应用,其他的应用可能也会有类似的逻辑。
SSO单点登录,也就是通过用户的一次性鉴别登录。
当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。
这种方式有什么好处呢?
简而言之,这样减少了由登录产生的时间消耗,也辅助了用户管理。
Teams中的SSO现在还处于Developer Preview阶段,不过我们可以先了解起来,真正release的时候,我们可以用起来。
实际上,逻辑就是:
当用户通过work或者school账号登陆Teams以后,我们可以利用SSO来认证用户,进而进入自己的Tab页,
也就是说,当用户已经在桌面上许可了app,那么就不需要再进行重复登陆了,其实是自动登陆。
那么Teams里的SSO的具体流程是什么样的呢?先看个流程图
-
这里用的是javascript的SDK,通过调用getAuthToken方法,为Tab应用获取auth token。
-
如果这是用户第一次访问Tab应用,用户会被提示授权【如果需要授权的话】或者类似于两步验证的流程。
-
Teams从Azure AD接口为当前用户获取Tab的token。
-
Azure AD发送token给Teams。
-
Teams再发送token给Tab应用,也就是当作getAuthToken方法的返回值。
-
Tab应用里的js可以解析token, 并且可以拿到一系列信息,比如用户邮箱地址。
注意:这里是拿不到graph scope里相关的数据,比如说OneDrive/ Mail相关的数据。但是有workaround的方法,这里不做阐述。下次有机会跟大家解释。
以上就是大概SSO在Teams里的流程,希望下次有时间能做个示例再跟大家分享一下。