CN104394147B - 在安卓系统的http协议中添加身份认证信息的方法 - Google Patents
在安卓系统的http协议中添加身份认证信息的方法 Download PDFInfo
- Publication number
- CN104394147B CN104394147B CN201410695644.7A CN201410695644A CN104394147B CN 104394147 B CN104394147 B CN 104394147B CN 201410695644 A CN201410695644 A CN 201410695644A CN 104394147 B CN104394147 B CN 104394147B
- Authority
- CN
- China
- Prior art keywords
- packet header
- signature
- request data
- field
- http protocol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 102000006479 Heterogeneous-Nuclear Ribonucleoproteins Human genes 0.000 claims description 9
- 108010019372 Heterogeneous-Nuclear Ribonucleoproteins Proteins 0.000 claims description 9
- 238000004891 communication Methods 0.000 abstract description 7
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 229910052804 chromium Inorganic materials 0.000 description 1
- 239000011651 chromium Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 229910052762 osmium Inorganic materials 0.000 description 1
- SYQBFIAQOQZEGI-UHFFFAOYSA-N osmium atom Chemical compound [Os] SYQBFIAQOQZEGI-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种在安卓系统的HTTP协议中添加身份认证信息的方法,主要解决现有安卓操作系统中HTTP通信协议身份认证能力不足的问题。其实现步骤是:(1)移除HTTP协议请求数据包包头中身份信息;(2)通过安卓操作系统获取应用程序的包名信息和签名信息,计算应用程序签名信息的摘要,将签名摘要与应用程序包名信息作为应用程序身份认证信息;(3)将应用程序签名摘要与包名信息添加至HTTP请求数据包包头中,发送至服务器。本发明提高了安卓系统HTTP协议身份认证的可靠性和身份认证能力,并能与现有HTTP协议保持最大兼容,可用于安卓操作系统的HTTP通信协议中。
Description
技术领域
本发明属于计算机领域,更进一步涉及一种安卓操作系统中对HTTP通信协议添加身份认证信息的方法。可用于增强服务器对应用程序的身份认证能力。
背景技术
超文本传输协议HTTP协议是一种常用的网络通信协议,在安卓操作系统中应用程序通过WebView控件进行HTTP协议通信。当应用程序需要使用HTTP协议与服务器进行通信时,应用程序将通信请求提交给WebView控件,WebView控件接收应用程序请求并使用HTTP协议的GET/POST方法向服务器发起请求数据包,服务器接收并处理请求数据包,服务器处理完毕后将请求结果返回给WebView控件,WebView控件将服务器返回结果处理后返回给应用程序,从而使应用程序完成网页浏览任务。在此流程中,WebView控件发出的HTTP请求数据包包头中“X-Requested-With”字段包含应用程序的包名,由于在安卓操作系统中应用程序的包名容易被伪造,因此服务器无法对应用身份进行有效验证,从而对服务器安全造成威胁。
目前,安卓操作系统中通过WebView控件已有一些由应用程序与服务器进行身份认证的方法。例如应用程序可以在向WebView控件提交请求时主动添加自身的身份认证信息,以方便服务器进行验证。但由于是应用程序主动添加身份信息,因此也存在被恶意应用程序伪造从而欺骗服务器的可能,所以服务器仍无法对应用程序身份进行有效认证。
发明内容
本发明的目的在于克服上述已有技术的不足,提出一种在安卓操作系统的HTTP协议中添加身份认证信息的方法,以防止恶意应用程序通过伪造包名手段对服务器进行身份欺骗,提高服务器对应用程序的身份认证能力。
本发明的技术方案是这样实现的:
一.技术原理
安卓操作系统通过应用程序的包名信息和签名信息对应用程序身份进行认证,其中应用程序的包名信息由应用程序开发者明文填写,容易被伪造;而签名信息由应用程序开发者根据签名算法生成密钥,并使用密钥对应用程序进行签名,很难被伪造,因此服务器能够结合包名信息和签名信息对应用程序身份进行有效验证。在安卓操作系统中应用程序使用WebView控件与服务器进行HTTP通信,应用程序通过创建WebView对象,并对此WebView对象调用函数以启动,WebView将应用程序传递的参数添加至请求数据包中,并对服务器发起HTTP协议GET/POST方法请求。为了解决在安卓操作系统的HTTP协议中服务器对应用程序身份认证能力不足的问题,可通过修改安卓操作系统的WebView控件,实现服务器对应用程序的身份认证。
二.技术方案
根据上述原理本发明的技术方案关键是:对安卓操作系统中WebView控件发送的HTTP协议GET方法请求数据包强制添加身份认证信息,对安卓操作系统中WebView控件发送的HTTP协议POST方法请求数据包强制添加身份认证信息。其实现步骤如下:
(1)WebView控件中对请求数据包包头Headers进行判断:若WebView控件中存在请求数据包包头Headers,则直接执行步骤(2),若WebView控件中不存在请求数据包包头Headers,创建一个内容为空的请求数据包包头Headers,再执行步骤(2);
(2)移除请求数据包包头Headers中的包名信息字段和签名信息字段;
2a)判断请求数据包包头Headers中包名信息字段是否存在,若该字段不存在,则直接执行步骤2b),若该字段存在,移除该字段,再执行步骤2b);
2b)判断请求数据包包头Headers中签名信息字段是否存在,若该字段不存在,则直接执行步骤(3),若该字段存在,移除该字段,再执行步骤(3);
(3)获取当前线程所属应用程序包名PkgName;
(4)获取当前线程所属应用程序签名PkgSignatures:
4a)获取当前线程所属包管理器PkgMgr;
4b)根据包名PkgName通过包管理器PkgMgr获取当前应用程序的包信息PkgInfo;
4c)通过包信息PkgInfo获取当前应用程序的签名PkgSignatures;
(5)使用哈希摘要算法计算签名PkgSignatures的签名摘要PkgSig;
(6)将获取的包名PkgName和签名摘要PkgSig添加到请求数据包包头Headers中;
6a)将获取的包名PkgName添加到请求数据包包头Headers的包名字段中;
6b)将获取的签名摘要PkgSig添加到请求数据包包头Headers的签名字段中。
本发明与现有技术相比具有以下优点:
第一、认证信息准确度高。本发明通过修改WebView控件,使其在安卓操作系统层面提供了可信的身份认证信息,恶意软件无法篡改,保证了身份认证信息的准确度;
第二、与现有协议兼容性高。本发明仅在WebView控件发出的请求数据包头部添加身份认证信息,对HTTP协议修改很少,保证了最大限度的兼容性;
第三、应用程序通用性高。Android操作系统中绝大多数应用程序通过WebView控件实现HTTP访问,本发明对WebView控件的修改体现了良好的通用性。
第四、采用签名摘要传输量少。本发明将应用程序的签名摘要添加至请求包包头中,与直接添加签名值相比传输量少。
附图说明
图1为本发明的实现总流程图;
图2为本发明中WebView控件中对请求数据包包头Headers进行判断的子流程图;
图3为本发明中移除请求数据包包头Headers中的包名信息字段和签名信息字段的子流程图;
图4为本发明中获取当前线程所属应用程序签名PkgSignatures的子流程图;
具体实施方式
参照图1,本发明的实现步骤如下:
步骤1,在WebView控件中对请求数据包包头Headers进行判断。
参照图2,本步骤的具体实现如下:
直接访问WebView控件中请求数据包包头Headers,若请求数据包包头Headers存在,则直接执行步骤2,若请求数据包包头Headers不存在,则创建一个内容为空的HashMap<String,String>对象,作为请求数据包包头Headers,再执行步骤2;
步骤2,移除请求数据包包头Headers中的包名信息字段和签名信息字段。
参照图3,本步骤的具体实现如下:
2a)访问请求数据包包头Headers中“package-name”字段,若“package-name”字段不存在,则直接执行步骤2b),若“package-name”字段存在,则移除该字段,再执行步骤2b);
2b)访问请求数据包包头Headers中“package-sig”字段,若“package-sig”字段不存在,则直接执行步骤3,若“package-sig”字段存在,则移除该字段,再执行步骤3。
步骤3,获取当前线程所属应用程序包名PkgName。
本步骤的具体实现是通过调用安卓操作系统提供的ActivityThread类库中currentPackageName函数,获取当前应用程序包名PkgName。
步骤4,获取当前线程所属应用程序签名PkgSignatures。
参照图4,本步骤的具体实现如下:
4a)调用安卓操作系统提供的ActivityThread类库中getPackageManager函数获取当前进程所属的包管理器PkgMgr;
4b)调用安卓操作系统提供的ActivityThread类库中getPackageInfo函数,根据包名PkgName获取当前线程所属的包信息PkgInfo;
4c)直接访问包信息PkgInfo的signatures属性获得当前包签名PkgSignatures。
步骤5,使用哈希摘要算法计算签名PkgSignatures的签名摘要PkgSig。
本步骤的具体实现是调用安卓操作系统MessageDigest类库提供的digest函数计算签名PkgSignatures的签名摘要PkgSig。
步骤6,将获取的包名PkgName和签名摘要PkgSig添加到请求数据包包头Headers中。
6a)将获取的包名PkgName添加到请求数据包包头Headers的包名信息“package-name”字段中。
6b)将获取的签名摘要PkgSig添加到请求数据包包头Headers的签名信息“package-sig”字段中。
6c)将请求数据包发送至服务器。
上述步骤需要在安卓操作系统WebView控件中loadUrl和postUrl函数中实现,两个函数均位于“/frameworks/webview/chromium/java/com/android/webview/chrosmium/WebViewChromium.java”文件中。
以上描述仅是本发明的一个具体实例,并不够成对本发明的任何限制。显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
Claims (6)
1.一种在安卓系统的HTTP协议中添加身份认证信息的方法,包括如下步骤:
(1)WebView控件中对请求数据包包头Headers进行判断:若WebView控件中存在请求数据包包头Headers,则直接执行步骤(2),若WebView控件中不存在请求数据包包头Headers,创建一个内容为空的请求数据包包头Headers,再执行步骤(2);
(2)移除请求数据包包头Headers中的包名信息字段和签名信息字段;
2a)判断请求数据包包头Headers中包名信息字段是否存在,若该字段不存在,则直接执行步骤2b),若该字段存在,移除该字段,再执行步骤2b);
2b)判断请求数据包包头Headers中签名信息字段是否存在,若该字段不存在,则直接执行步骤(3),若该字段存在,移除该字段,再执行步骤(3);
(3)通过调用安卓操作系统提供的ActivityThread类库中currentPackageName函数,获取当前线程所属应用程序包名PkgName;
(4)获取当前线程所属应用程序签名PkgSignatures:
4a)获取当前线程所属包管理器PkgMgr;
4b)根据包名PkgName通过包管理器PkgMgr获取当前应用程序的包信息PkgInfo;
4c)通过包信息PkgInfo获取当前应用程序的签名PkgSignatures;
(5)使用哈希摘要算法计算签名PkgSignatures的签名摘要PkgSig;
(6)将获取的包名PkgName和签名摘要PkgSig添加到请求数据包包头Headers中;
6a)将获取的包名PkgName添加到请求数据包包头Headers的包名字段中;
6b)将获取的签名摘要PkgSig添加到请求数据包包头Headers的签名字段中。
2.根据权利要求1所述的在安卓系统的HTTP协议中添加身份认证信息的方法,其特征在于,步骤(3)所述的获取当前线程所属应用程序包名PkgName,是通过安卓操作系统提供的ActivityThread类库中currentPackageName函数获得。
3.根据权利要求1所述的在安卓系统的HTTP协议中添加身份认证信息的方法,其特征在于,步骤4a)所述的获取当前线程所属包管理器PkgMgr,是通过安卓操作系统提供的ActivityThread类库中getPackageManager函数获得。
4.根据权利要求1所述的在安卓系统的HTTP协议中添加身份认证信息的方法,其特征在于,步骤4b)所述的根据包名PkgName通过包管理器PkgMgr获取当前应用程序的包信息PkgInfo,是通过安卓操作系统提供的ActivityThread类库中getPackageInfo函数获得。
5.根据权利要求1所述的在安卓系统的HTTP协议中添加身份认证信息的方法,其特征在于,步骤4c)所述的通过包信息PkgInfo获取当前应用程序的签名PkgSignatures,是通过包信息PkgInfo的signatures属性获得。
6.根据权利要求1所述的在安卓系统的HTTP协议中添加身份认证信息的方法,其特征在于,步骤(5)所述的使用哈希摘要算法计算签名PkgSignatures的签名摘要PkgSig,是使用安卓操作系统MessageDigest类库提供的digest函数进行哈希摘要计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410695644.7A CN104394147B (zh) | 2014-11-26 | 2014-11-26 | 在安卓系统的http协议中添加身份认证信息的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410695644.7A CN104394147B (zh) | 2014-11-26 | 2014-11-26 | 在安卓系统的http协议中添加身份认证信息的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104394147A CN104394147A (zh) | 2015-03-04 |
CN104394147B true CN104394147B (zh) | 2017-06-16 |
Family
ID=52611982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410695644.7A Expired - Fee Related CN104394147B (zh) | 2014-11-26 | 2014-11-26 | 在安卓系统的http协议中添加身份认证信息的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104394147B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150865A (zh) * | 2018-08-07 | 2019-01-04 | 厦门市美亚柏科信息股份有限公司 | 一种移动终端app通讯协议的保护、装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1820481A (zh) * | 2003-07-11 | 2006-08-16 | 国际商业机器公司 | 在客户机-服务器环境中认证客户机的系统和方法 |
CN103095731A (zh) * | 2013-02-22 | 2013-05-08 | 浪潮电子信息产业股份有限公司 | 一种基于签名机制的rest安全系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078870B2 (en) * | 2009-05-14 | 2011-12-13 | Microsoft Corporation | HTTP-based authentication |
-
2014
- 2014-11-26 CN CN201410695644.7A patent/CN104394147B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1820481A (zh) * | 2003-07-11 | 2006-08-16 | 国际商业机器公司 | 在客户机-服务器环境中认证客户机的系统和方法 |
CN103095731A (zh) * | 2013-02-22 | 2013-05-08 | 浪潮电子信息产业股份有限公司 | 一种基于签名机制的rest安全系统 |
Non-Patent Citations (2)
Title |
---|
Android OS 手机平台的安全机制分析和应用研究;宋杰等;《计算机技术与发展》;20101231;全文 * |
Android 安全机制分析与解决方案初探;廖明华等;《科学技术与工程》;20111231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104394147A (zh) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107612895B (zh) | 一种互联网防攻击方法及认证服务器 | |
CN107483509B (zh) | 一种身份验证方法、服务器及可读存储介质 | |
US11673058B2 (en) | Data transport of encryption key used to secure communication between computing devices | |
CN105491001B (zh) | 一种安全通讯方法和装置 | |
CN104917721B (zh) | 基于oAuth协议的授权方法、装置和系统 | |
CN103139200B (zh) | 一种Web service单点登录的方法 | |
CN110113366B (zh) | Csrf漏洞的检测方法及装置,计算设备和存储介质 | |
CN104869102B (zh) | 基于xAuth协议的授权方法、装置和系统 | |
CN106534160A (zh) | 基于区块链的身份认证方法及系统 | |
CN110363512B (zh) | 区块链红包的处理、创建、领取方法和装置、介质及计算机程序 | |
CN108322416B (zh) | 一种安全认证实现方法、装置及系统 | |
CN105306534A (zh) | 一种基于开放平台的信息校验方法和开放平台 | |
CN108900479A (zh) | 短信验证码获取方法及装置 | |
CN109040069A (zh) | 一种云应用程序的发布方法、发布系统及访问方法 | |
CN112448930A (zh) | 账号注册方法、装置、服务器及计算机可读存储介质 | |
US8875244B1 (en) | Method and apparatus for authenticating a user using dynamic client-side storage values | |
CN116991936A (zh) | 基于区块链的权益凭证管理方法、装置、电子设备和介质 | |
CN111260348A (zh) | 一种车联网中基于智能合约的公平支付系统及其工作方法 | |
CN110910110A (zh) | 一种数据处理方法、装置及计算机存储介质 | |
CN106709768B (zh) | 一种发票异步下载的方法和下载系统 | |
CN104394147B (zh) | 在安卓系统的http协议中添加身份认证信息的方法 | |
CN112965841A (zh) | 基于h5的云手机支付方法及装置 | |
CN113596839A (zh) | 一种安全可靠的定向访问免流流量认证方法 | |
CN116170144B (zh) | 智能电网匿名认证方法、电子设备及存储介质 | |
CN111866993A (zh) | 无线局域网连接管理方法、装置、软件程序及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170616 |