android单点登录自动退出,Android操作系统中的单点登录的身份认证方法

Android操作系统中的单点登录的身份认证方法

【专利摘要】本发明公开了一种Android操作系统中的单点登录的身份认证方法,主要解决现有安卓操作系统中单点登录身份认证能力不足的问题。其实现步骤是:(1)获取第三方应用程序传来的身份信息;(2)通过Android操作系统获取应用程序的包名信息和签名信息;(3)比对第三方传来的身份信息和通过Android获取的真实的身份信息以验证身份。本发明提高了Android操作系统中的单点登录身份认证的可靠性和身份认证能力,应用范围广,易于操作,可用于消除单点登录系统中存在的安全隐患。

【专利说明】Android操作系统中的单点登录的身份认证方法

【技术领域】

[0001]本发明属于计算机领域,更进一步涉及一种Android操作系统中的单点登录功能身份认证方法,可用于对第三方的身份认证能力的增强。

【背景技术】

[0002]单点登录是在多个应用系统中,用户只需要登陆一次就可以访问所有可信的第三方应用的功能,它是一种可以将这次主要的登录映射到其他应用中用于同一个用户登录的机制。单点登录机制具有以下特点:

[0003]1.改善应用易用性。单点登录机制对于用户使用非常方便,用户只需记住一个用户名和密码,而且只需输入一次,便可登陆其他所有可信应用。

[0004]2.提高应用开发效率。对于开发人员来说,通过使用单点登录系统,第三方应用开发人员可以专注于业务逻辑,无须自己再设计身份验证程序。

[0005]3.增强应用间数据共享。由于用户认证中心提供单点登录功能,并且提供众多的接口供第三方应用使用,因此第三方应用在用户授权的情况下可以获取到用户存储在用户认证中心的相关数据,增强了应用间数据共享能力。

[0006]目前,Android操作系统中已有一些实际的提供单点登陆认证的用户认证中心。例如腾讯通过QQ互联平台提供单点登陆功能。QQ互联平台是腾讯在Android操作系统中为第三方网站、媒体、终端等产品提供的开放平台,主要包括QQ登录、分享等社交组件及开放API等;一方面为互联网用户提供便捷的社交服务和安全的帐号体系,另一方面为第三方合作伙伴打造全新的社会化营销工具和搜索系统,与中国互联网产业共同分享和营造开放的、个性化的社交网络。

[0007]当第三方应用使用单点登录时,第三方应用需要向用户认证中心传入应用的包名信息和签名信息。然而在安卓系统中应用程序的包名和签名信息容易伪造,而用户认证中心没有对应用身份的有效性进行验证,从而存在恶意应用欺骗用户认证中心的情况。

【发明内容】

[0008]本发明的目的在于克服上述已有技术的不足,提出一种Android操作系统中的单点登录功能身份认证方法,以防止恶意应用程序通过伪造包名手段欺骗用户认证中心,增强了用户认证中心对第三方应用的身份认证能力。

[0009]实现本发明目的的技术方案是:通过对用户认证中心进行修改,当用户认证中心接收到第三方应用请求时,用户认证中心通过Android操作系统主动获取第三方应用的签名、包名等信息,并与第三方应用传入的参数进行检查,判断第三方应用所提供参数是否真实,从而解决第三方应用通过伪造签名、包名对用户认证中心提出请求的安全性问题,增强Android操作系统中单点登录的身份认证能力。具体步骤包括如下:

[0010](I)在Android系统中由第三方向用户认证中心传送身份认证信息:

[0011]Ia)第三方创建身份认证请求对象Request,并将签名PkgSig、包名PkgName作为参数填入Request对象中;

[0012]lb)第三方将填有参数的请求对象Request传给用户认证中心;

[0013](2)用户认证中心接收第三方传输的请求对象Request,并从中读取第三方传递的签名PkgSig和包名PkgName ;

[0014](3)用户认证中心查询身份信息,即通过Android操作系统函数获得第三方的真实包名RealPkgName和真实签名RealPkgSig ;

[0015](4)用户认证中心验证身份信息:

[0016]4a)用户认证中心将读取的签名PkgSig与真实签名RealPkgSig对比,若两者一致则继续步骤4b),否则,身份验证失败;

[0017]4b)用户认证中心将读取的包名PkgName与真实包名RealPkgName对比,若两者一致,则身份验证成功,否则,身份验证失败。

[0018]本发明与现有技术相比具有以下优点:

[0019]1.认证信息准确度高。Android操作系统在系统层面提供了可信的身份信息获取接口,本发明通过该接口获取身份认证信息,恶意软件无法篡改和伪造,保证了身份认证信息的准确度;

[0020]2.应用广泛。目前Android操作系统中的单点登录系统普遍缺少一种身份认证机制,通过本发明提出的身份认证方法,可以有效的消除大多数单点登录系统中存在的安全隐患;

[0021]3.易于操作。本发明提出的身份认证方法利用了 Android操作系统现有的身份信息获取接口,从而避免了复杂的身份信息获取流程,使得本发明提出的身份认证方法可以很容易的应用到实际的单点登录系统中。

【专利附图】

【附图说明】

[0022]图1为本发明的实现总流程图;

[0023]图2为本发明中第三方发起身份认证请求的子流程图;

[0024]图3为本发明中用户认证中心接收第三方身份认证请求的子流程图;

[0025]图4为本发明中用户认证中心查询身份信息的子流程图;

[0026]图5为本发明中用户认证中心对比身份信息的子流程图。

【具体实施方式】

[0027]参照图1,本发明的实现步骤如下:

[0028]步骤1,第三方发起身份认证请求。

[0029]如图2所示,本步骤的具体实现如下:

[0030]Ia)第三方创建请求对象Request,用于发起身份认证请求;

[0031]lb)第三方通过Android操作系统提供的putExtra函数,将签名PkgSig、包名PkgName作为参数填入请求对象Request中;

[0032]Ic)第三方通过Android操作系统提供的startActivityForResult函数发起身份认证请求。

[0033]步骤2,用户认证中心接收第三方身份认证请求。

[0034]参照图3,本步骤的具体实现如下:

[0035]2a)用户认证中心通过注册接口 protected void onCreate获取身份认证请求对象 Request ;

[0036]2b)用户认证中心通过Android操作系统提供的getStringExtra函数从R请求对象equest中读取第三方传递的签名PkgSig ;

[0037]2c)用户认证中心通过Android操作系统提供的getStringExtra函数从请求对象Request中读取第三方传递的包名PkgName。

[0038]步骤3,用户认证中心查询身份信息。

[0039]参照图4,本步骤的具体实现如下:

[0040]3a)用户认证中心通过Android操作系统提供的getCallingActivity函数及getPackageName函数从Request中获得第三方真实包名RealPkgName。

[0041]3b)用户认证中心调用Android操作系统提供的ActivityThread类库中的getPackageManager函数,获取当前进程所属的包管理器PkgMgr,将真实包名RealPkgName作为参数调用包管理器PkgMgr中的getPackagelnfo函数,以获得真实签名RealPkgSig。

[0042]步骤4,用户认证中心验证身份信息。

[0043]参照图5,本步骤的具体实现如下:

[0044]4a)比较签名PkgSig与真实签名RealPkgSig是否一致:若一致,则继续执行步骤4b),否则身份验证失败;

[0045]4b)比较包名PkgName与真实包名RealPkgName是否一致:,若一致,则身份验证成功,否则,身份验证失败。

[0046]以上描述仅是本发明的一个具体实例,并不够成对本发明的任何限制。显然对于本领域的专业人员来说,在了解了本

【发明内容】

和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。

【权利要求】

1.一种Android操作系统中的单点登录的身份认证方法,包括如下步骤: (1)在Android系统中由第三方向用户认证中心传送身份认证信息: Ia)第三方创建身份认证请求对象Request,并将签名PkgSig、包名PkgName作为参数填入Request对象中; Ib)第三方将填有参数的请求对象Request传给用户认证中心; (2)用户认证中心接收第三方传输的请求对象Request,并从中读取第三方传递的签名 PkgSig 和包名 PkgName ; (3)用户认证中心查询身份信息,即通过Android操作系统函数获得第三方的真实包名 RealPkgName 和真实签名 RealPkgSig ; (4)用户认证中心验证身份信息: 4a)用户认证中心将读取的签名PkgSig与真实签名RealPkgSig对比,若两者一致则继续步骤4b),否则,身份验证失败; 4b)用户认证中心将读取的包名PkgName与真实包名RealPkgName对比,若两者一致,则身份验证成功,否则,身份验证失败。

2.根据权利要求1所述的Android操作系统中的单点登录的身份认证方法,其特征在于,所述步骤Ia)中将签名PkgSig、包名PkgName作为参数填入请求对象Request中,是通过Android操作系统提供的putExtra函数实现。

3.根据权利要求1所述的Android操作系统中的单点登录的身份认证方法,其特征在于,所述步骤(2)中读取第三方传递的签名PkgSig和包名PkgName,是通过Android操作系统提供的getStringExtra函数实现。

4.根据权利要求1所述的Android操作系统中的单点登录功能的认证方法,其特征在于,所述步骤(3)中获得第三方的真实包名RealPkgName,是通过Android操作系统提供的getCalIingActivity 函数和 getPackageName 函数实现。

5.根据权利要求1所述的Android操作系统中的单点登录功能的认证方法,其特征在于,所述步骤(3)中获得第三方的真实签名RealPkgSig,是将真实包名RealPkgName作为参数,通过调用Android操作系统的getPackagelnfo函数获得。

【文档编号】H04L29/06GK104486318SQ201410748385

【公开日】2015年4月1日 申请日期:2014年12月8日 优先权日:2014年12月8日

【发明者】陈东, 杨超, 马建峰, 董超, 周洪丞, 张明月, 张坤, 姚亮 申请人:西安电子科技大学

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
环信 Android SDK 支持单点登录(SSO),可以通过以下步骤实现: 1. 在您的服务器上实现 SSO 登录,并返回 token。 2. 将 token 发送给环信服务器,以获取环信的用户身份信息。 3. 使用环信用户身份信息登录环信 SDK。 具体实现过程如下: 1. 在您的服务器上实现 SSO 登录,并返回 token。 2. 使用 token 发起请求,获取环信用户身份信息。您可以使用如下代码实现: ```java EMHttpClient.getInstance().get("http://example.com/userinfo?token=xxxxxx", new EMValueCallBack<String>() { @Override public void onSuccess(String value) { // 解析返回的用户信息 JSONObject jsonObject = new JSONObject(value); String hxUserId = jsonObject.getString("hxUserId"); String hxUserPwd = jsonObject.getString("hxUserPwd"); // 使用环信用户身份信息登录环信 SDK EMClient.getInstance().login(hxUserId, hxUserPwd, new EMCallBack() { @Override public void onSuccess() { // 登录成功 } @Override public void onError(int code, String error) { // 登录失败 } @Override public void onProgress(int progress, String status) { // 登录 } }); } @Override public void onError(int error, String errorMsg) { // 获取用户信息失败 } }); ``` 以上代码,`http://example.com/userinfo?token=xxxxxx` 是您的服务器提供的获取用户信息的接口,其 `xxxxxx` 是从您的服务器获取的 token。 3. 如果您的环信账号与您的 SSO 登录账号一一对应,那么您可以将环信的用户名和密码保存在自己的服务器上,下次登录时直接使用这些信息进行登录,不需要再次获取环信用户身份信息。如果您的环信账号与您的 SSO 登录账号不一一对应,那么您需要在获取环信用户身份信息时进行环信账号和 SSO 登录账号的映射,并将映射关系保存在您的服务器上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值