发明内容
本申请实施例提供了一种消息推送方法、电子设备及存储介质,通过在消息推送方处对消息提供方的消息推送请求进行验证,在验证通过后对待推送消息进行推送,由此可以避免消息串网,进而可以提高消息提供方消息推送的安全性。
第一方面,本申请实施例提供了一种消息推送方法,包括:
创建应用程序身份标识与预设密钥之间的映射关系;将映射关系发送至消息提供方;具体地,可以在消息推送方处预先创建应用程序身份标识与预设密钥之间的映射关系。其中,应用程序身份标识用于识别应用程序;该预设密钥可以采用本领域常用的对称或非对称密钥。
接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括第一信息及用于进行验证的第一摘要,第一摘要由消息提供方使用预设密钥对第一信息进行摘要提取后获得,第一信息至少包括应用程序身份标识;具体地,该消息提供方可以是向消息接收方提供待推送消息的对象,其中,上述待推送消息可以包括与应用程序相关的公告消息、通知消息以及其他类型的待推送消息。该第一信息至少包括应用程序身份标识,此外,该第一信息也可以包括JWT签发者、签发时间、签发有效时间等声明信息,本申请实施例对此不作特殊限定。
查询是否存在与消息推送请求中的应用程序身份标识对应的预设密钥;若存在与应用程序身份标识对应的预设密钥,使用预设密钥对消息推送请求中的第一信息进行摘要提取,获得第二摘要;具体地,可以根据应用程序身份标识与预设密钥之间的映射关系进行查找,以确定是否存在与消息推送请求中的应用程序身份标识对应的预设密钥。
将第二摘要与第一摘要进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。具体地,若第二摘要与第一摘要一致,则消息推送方可以将待推送消息进行推送,其中,推送的目标对象可以是与消息推送请求中的应用程序身份标识对应的消息接收方,例如,该消息接收方可以包括已安装与上述应用程序身份标识对应的应用程序的移动终端;若第二摘要与第一摘要不一致,则可以向消息提供方返回失败消息,并可以结束本次消息推送任务。
通过在消息推送请求中携带摘要信息及接收方信息,在消息推送方处基于该摘要信息进行比对,以完成本次消息推送请求的验证,并在验证通过后将待推送消息发送至与接收方信息对应的接收方,可以避免消息串网,进而提高消息推送的安全性。
其中一种可能的实现方式中,消息推送请求还包括消息提供方的签名,对将所述第二摘要与所述第一摘要进行比对之前,还包括:
根据签名对消息推送请求进行身份验证,以确定消息提供方的身份是否合法。
其中一种可能的实现方式中,上述方法还包括:
若不存在与应用程序身份标识对应的预设密钥,则终止本次待推送消息的推送。具体地,若判断查找不到预设密钥,则可以认为本次消息推送方为非法用户,也就是说,该消息推送方无权进行消息推送,因此,可以终止本次待推送消息的推送,由此可以提高系统的效率,以及提高消息推送的安全性。
其中一种可能的实现方式中,第一信息包括多个应用程序身份标识,消息推送请求包括多个与应用程序身份标识对应的第一摘要,使用预设密钥对消息推送请求中的第一信息进行摘要提取,获得第二摘要包括:
分别使用与应用程序身份标识对应的预设密钥对消息推送请求中的第一信息进行摘要提取,获得多个与应用程序身份标识对应的第二摘要。具体地,第一信息可以包括多个应用程序身份标识,也就是说,待推送消息可以推送给多个接收方。因此,在消息推送方可以使用每个与应用程序身份标识对应的预设密钥对第一信息进行摘要提取,获得多个第二摘要。
其中一种可能的实现方式中,将第二摘要与第一摘要进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方包括:
分别将对应同一个应用程序身份标识的第一摘要和第二摘要进行比对;若所有应用程序身份标识的第一摘要和第二摘要比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。具体地,分别将每个第一摘要与对应的第二摘要进行比对,若所有的第一摘要与对应的第二摘要均一致,则可以将待推送消息推送至与应用程序身份标识对应的消息接收方,由此可以在保证消息推送安全的基础上,实现多条待推送消息的推送。
本申请实施例还提供了一种消息推送方法,包括:
接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括应用程序身份标识及消息提供方身份标识;具体地,应用程序身份标识用于识别应用程序;消息提供方身份标识用于识别消息提供方。
查询是否存在与消息推送请求中的应用程序身份标识对应的第一数据源及与消息推送请求中的消息提供方身份标识对应的第二数据源;具体地,消息推送方处可以预先存储应用程序身份标识与第一数据源的映射关系,以及消息提供方身份标识与第二数据源的映射关系。基于应用程序身份标识及消息提供方身份标识可以查询是否存在对应的第一数据源和第二数据源。
若存在第一数据源及第二数据源,则将第一数据源与第二数据源进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
通过消息推送请求中携带应用程序身份标识及消息提供方身份标识,基于应用程序身份标识及消息提供方身份标识查询获得对应的第一数据源及第二数据源,通过第一数据源与第二数据源的比对,以完成对消息推送请求的验证,由此可以避免消息串网,进而提高消息推送的安全性。
其中一种可能的实现方式中,接收消息提供方发送的待推送消息及消息推送请求之前,还包括:
接收消息提供方发送的身份注册请求,其中,身份注册请求包括数据源及身份注册类型,身份注册类型包括第一类型及第二类型;具体地,该数据源可以用于标识消息提供方存储数据的源地址,该身份注册类型可以用于标识消息提供方本次请求哪个对象的身份标识,示例性的,该第一类型可以对应消息提供方的身份标识,该第二类型可以对应应用程序的身份标识。
若判断身份注册类型为第一类型,则上述数据源包括第一数据源,分配消息提供方身份标识,将消息提供方身份标识与第一数据源进行关联后存储,并将消息提供方身份标识发送给消息提供方;若判断身份注册类型为第二类型,则上述数据源包括第二数据源,分配应用程序身份标识,将应用程序身份标识与第二数据源进行关联后存储,并将应用程序身份标识发送给消息提供方;具体地,可以由消息推送方基于身份注册类型分配消息提供方身份标识或应用程序身份标识,并可以由消息推送方分别将消息提供方身份标识与第一数据源进行关联或将应用程序身份标识与第二数据源进行关联后存储在本地。通过两次注册过程,可以分别完成消息提供方的注册及与该消息提供方对应的应用程序的注册。
其中一种可能的实现方式中,若判断身份注册类型为第二类型,则身份注册请求还包括消息提供方身份标识,上述方法还包括:
基于消息提供方身份标识进行查询,获得对应的第一数据源;将查询获得的第一数据源与身份注册请求中的第二数据源进行比对,基于比对结果确定是否分配应用程序身份标识。具体地,在应用程序注册时,身份注册请求中携带的第二数据源应与第一数据源一致,因此,通过判断第一数据源与第二数据源是否一致,以确定是否分配应用程序身份标识,由此可以提高应用程序注册的安全性。
其中一种可能的实现方式中,消息推送请求包括多个应用程序身份标识,将第一数据源与第二数据源进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方包括:
分别将每个与应用程序身份标识对应的第一数据源与第二数据源进行比对;若所有的第一数据源与第二数据源均一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。具体地,可以将每个第一数据源分别与第二数据源进行比对,若每个第一数据源与第二数据源均一致,则可以将待推送消息推送至与应用程序身份标识对应的消息接收方,由此可以在保证消息推送安全的基础上,实现多条待推送消息的推送。
第二方面,本申请实施例提供一种消息推送装置,包括:
创建模块,用于创建应用程序身份标识与预设密钥之间的映射关系;
发送模块,用于将映射关系发送至消息提供方;
接收模块,用于接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括第一信息及用于进行验证的第一摘要,第一摘要由消息提供方使用预设密钥对第一信息进行摘要提取后获得,第一信息至少包括应用程序身份标识。
验证模块,用于查询是否存在与消息推送请求中的应用程序身份标识对应的预设密钥;若存在与应用程序身份标识对应的预设密钥,使用预设密钥对消息推送请求中的第一信息进行摘要提取,获得第二摘要;
推送模块,用于将第二摘要与第一摘要进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
其中一种可能的实现方式中,消息推送请求还包括消息提供方的签名,上述装置还包括:
验签模块,用于根据签名对消息推送请求进行身份验证,以确定消息提供方的身份是否合法。
其中一种可能的实现方式中,上述验证模块还用于若不存在与应用程序身份标识对应的预设密钥,则终止本次待推送消息的推送。其中一种可能的实现方式中,第一信息包括多个应用程序身份标识,消息推送请求包括多个与应用程序身份标识对应的第一摘要,上述验证模块还用于分别使用与应用程序身份标识对应的预设密钥对消息推送请求中的第一信息进行摘要提取,获得多个与应用程序身份标识对应的第二摘要。
其中一种可能的实现方式中,上述推送模块还用于分别将对应同一个应用程序身份标识的第一摘要和第二摘要进行比对;若所有应用程序身份标识的第一摘要和第二摘要比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
本申请实施例还提供一种消息推送装置,包括:
接收模块,用于接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括应用程序身份标识及消息提供方身份标识;
验证模块,用于查询是否存在与消息推送请求中的应用程序身份标识对应的第一数据源及与消息推送请求中的消息提供方身份标识对应的第二数据源;
推送模块,用于若存在第一数据源及第二数据源,则将第一数据源与第二数据源进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
其中一种可能的实现方式中,上述装置还包括:
注册模块,用于接收消息提供方发送的身份注册请求,其中,身份注册请求包括数据源及身份注册类型,身份注册类型包括第一类型及第二类型;若判断身份注册类型为第一类型,则数据源包括第一数据源,分配消息提供方身份标识,将消息提供方身份标识与第一数据源进行关联后存储,并将消息提供方身份标识发送给消息提供方;若判断身份注册类型为第二类型,则数据源包括第二数据源,分配应用程序身份标识,将应用程序身份标识与第二数据源进行关联后存储,并将应用程序身份标识发送给消息提供方。
其中一种可能的实现方式中,若判断身份注册类型为第二类型,则身份注册请求还包括消息提供方身份标识,上述装置还包括:
核查模块,用于基于消息提供方身份标识进行查询,获得对应的第一数据源;将查询获得的第一数据源与身份注册请求中的第二数据源进行比对,基于比对结果确定是否分配应用程序身份标识。
其中一种可能的实现方式中,消息推送请求包括多个应用程序身份标识,上述推送模块还用于分别将每个与应用程序身份标识对应的第一数据源与第二数据源进行比对;若所有的第一数据源与第二数据源均一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
第三方面,本申请实施例提供一种电子设备,包括:
处理器和存储器,该存储器用于存储计算机程序代码,该计算机程序代码包括指令,当该处理器从该存储器中读取指令时,以使得该电子设备执行以下步骤:创建应用程序身份标识与预设密钥之间的映射关系;
将映射关系发送至消息提供方;
接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括第一信息及用于进行验证的第一摘要,第一摘要由消息提供方使用预设密钥对第一信息进行摘要提取后获得,第一信息至少包括应用程序身份标识;
查询是否存在与消息推送请求中的应用程序身份标识对应的预设密钥;
若存在与应用程序身份标识对应的预设密钥,使用预设密钥对消息推送请求中的第一信息进行摘要提取,获得第二摘要;
将第二摘要与第一摘要进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
其中一种可能的实现方式中,上述消息推送请求还包括消息提供方的签名,上述指令被上述电子设备执行时,使得上述电子设备执行将第二摘要与第一摘要进行比对之前,还执行以下步骤:
根据签名对消息提供方进行身份验证,以确定消息提供方的身份是否合法。
其中一种可能的实现方式中,上述指令被上述电子设备执行时,使得上述电子设备还执行以下步骤:
若不存在与应用程序身份标识对应的预设密钥,则终止本次待推送消息的推送。。
其中一种可能的实现方式中,第一信息包括多个应用程序身份标识,消息推送请求包括多个与应用程序身份标识对应的第一摘要,上述指令被上述电子设备执行时,使得上述电子设备执行使用预设密钥对消息推送请求中的第一信息进行摘要提取,获得第二摘要的步骤包括:
分别使用与应用程序身份标识对应的预设密钥对消息推送请求中的第一信息进行摘要提取,获得多个与应用程序身份标识对应的第二摘要。
其中一种可能的实现方式中,上述指令被上述电子设备执行时,使得上述电子设备执行将第二摘要与第一摘要进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方的步骤包括:
分别将对应同一个应用程序身份标识的第一摘要和第二摘要进行比对;
若所有应用程序身份标识的第一摘要和第二摘要比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
本申请实施例还提供一种电子设备,包括:
处理器和存储器,该存储器用于存储计算机程序代码,该计算机程序代码包括指令,当该处理器从该存储器中读取指令时,以使得该电子设备执行以下步骤:
接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括应用程序身份标识及消息提供方身份标识;
查询是否存在与消息推送请求中的应用程序身份标识对应的第一数据源及与消息推送请求中的消息提供方身份标识对应的第二数据源;
若存在第一数据源及第二数据源,则将第一数据源与第二数据源进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
其中一种可能的实现方式中,上述指令被上述电子设备执行时,使得上述电子设备执行接收消息提供方发送的待推送消息及消息推送请求的步骤之前,还执行以下步骤:
接收消息提供方发送的身份注册请求,其中,身份注册请求包括数据源及身份注册类型,身份注册类型包括第一类型及第二类型;
若判断身份注册类型为第一类型,则数据源包括第一数据源,分配消息提供方身份标识,将消息提供方身份标识与第一数据源进行关联后存储,并将消息提供方身份标识发送给消息提供方;
若判断身份注册类型为第二类型,则数据源包括第二数据源,分配应用程序身份标识,将应用程序身份标识与第二数据源进行关联后存储,并将应用程序身份标识发送给消息提供方。
其中一种可能的实现方式中,若判断身份注册类型为第二类型,则身份注册请求还包括消息提供方身份标识,上述指令被上述电子设备执行时,使得上述电子设备还执行以下步骤:
基于消息提供方身份标识进行查询,获得对应的第一数据源;
将查询获得的第一数据源与身份注册请求中的第二数据源进行比对,基于比对结果确定是否分配应用程序身份标识。
其中一种可能的实现方式中,消息推送请求包括多个应用程序身份标识,上述指令被上述电子设备执行时,使得上述电子设备执行将第一数据源与第二数据源进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方的步骤包括:
分别将每个与应用程序身份标识对应的第一数据源与第二数据源进行比对;
若所有的第一数据源与第二数据源均一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序,当上述计算机程序被计算机执行时,用于执行如第一方面所述的方法。
在一种可能的设计中,第五方面中的程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
JWT是为了在网络应用环境间传递声明而执行的一种基于Json的开放标准,该JWT被设计为紧凑且安全的,特别适用于分布式站点的单点登录,且该JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑说必须的声明信息。此外,该JWT也可直接被用于认证,也可被加密。其中,该JWT可以由三部分组成,第一部分为头部,第二部分为载荷,第三部分是签名。
该JWT可以用于签名鉴权,例如,消息提供方可以将消息推送请求通过JWT的方式发送给消息推送方。消息推送方对该消息推送请求进行签名鉴权后,确定消息提供方的身份是否合法,也就是说,确定消息提供方是否可以将待推送消息推送给消息接收方。但是,目前的签名鉴权方式无法确定将待推送消息推送至哪些消息接收方,有可能发生将发送给消息接收方A的待推送消息发送给了消息接收方B。因此,上述签名鉴权方式无法解决消息串网的问题,由此给消息提供方的数据推送带来安全隐患。
基于上述问题,本申请实施例提供了一种消息推送方法。
本申请实施例提供的消息推送方法可运用于数据处理设备,该数据处理设备可以是服务器,本申请对执行该技术方案的数据处理设备的具体形式不做特殊限制。
本申请实施例应用的场景如图1所示,该应用场景包括消息提供方110、消息推送方120及消息接收方130,其中,该消息提供方110用于向消息推送方120发送待推送消息及消息推送请求,使得消息推送方120在对消息推送请求进行验证后,对该待推送消息进行推送。示例性的,该待推送消息可以包括与应用程序相关的公告消息、通知消息以及其他类型的消息,例如,该待推送消息可以是“凌晨1点升级服务的公告信息”。该待推送消息也可以是其它类型的消息,本申请实施例对此不作特殊限定。
消息推送方120用于接收消息提供方110发送的待推送消息及消息推送请求,对消息推送请求进行验证,并将该待推送消息推送给正确的消息接收方130。其中,该消息推送方120包括推送系统121及验证系统122,验证系统122用于对消息推送请求进行验证,推送系统121用于在消息推送请求验证通过后将待推送消息推送给消息接收方130。
需要说明的是,消息提供方110发送的待推送消息是基于应用程序的,因此,消息推送方120可以将待推送消息推送给消息接收方130(例如,移动终端)上已安装的对应的应用程序。例如,当消息推送方120推送与音乐应用131对应的公告消息时,若消息接收方130上安装了音乐应用131,则可以接收该公告消息。
该消息接收方130用于接收消息推送方120推送的消息。其中,该消息接收方130可以是安装了应用程序(例如,音乐应用131、地图应用132等)的移动终端,也可以是安装了上述应用程序的其他类型的终端,本申请对此不作特殊限定。
现结合图2-图5,以消息提供方110发送分别与音乐应用131和地图应用132对应的两条待推送消息为例,对本申请实施例提供的消息推送方法进行说明,如图2所示为本申请消息推送方法一个实施例的交互流程图,包括:
步骤201,消息推送方120创建与应用程序对应的应用密钥。
具体地,消息推送方120可以预先设置多个应用程序(例如,音乐应用、地图应用、点餐应用等)的身份标识,例如,可以给音乐应用131设置音乐应用ID,也可以给地图应用132设置地图应用ID。可以理解的是,应用程序的身份标识用于识别应用程序。可选地,应用程序的身份标识也可以由消息提供方110预先发送给消息推送方120,本申请对此不作特殊限定。
当消息推送方120获取到应用程序的身份标识后,可以对每个应用程序创建对应的应用密钥,例如,可以给音乐应用131创建对应的应用密钥(以下简称为音乐应用密钥),可以给地图应用132创建对应的应用密钥(以下简称为地图应用密钥)。其中,该应用密钥可以采用本领域常用的对称或非对称密钥,本申请实施例对此不作特殊限定。
步骤202,消息推送方120将应用程序与应用密钥之间的映射关系发送给消息提供方110。
具体地,在消息推送方120中可以建立应用程序与应用密钥之间的一对一的映射关系,并可以将该映射关系存储在本地数据库中。接着,消息推送方120可以将该映射关系发送给消息提供方110。在具体实现时,该本地数据库可以设置在消息推送方120中的验证系统122中。
步骤203,消息提供方110获取声明信息、音乐应用131身份标识及地图应用132身份标识,并使用音乐应用密钥对该声明信息、音乐应用131身份标识及地图应用132身份标识进行摘要提取,生成对应的摘要(以下简称音乐应用摘要),使用地图应用密钥对该声明信息、音乐应用131身份标识及地图应用132身份标识进行摘要提取,生成对应的摘要(以下简称地图应用摘要)。
具体地,该声明信息可以包括与本次消息推送请求相关的信息,其中,该消息推送请求用于消息提供方100向消息推送方200请求推送上述待推送消息。该消息推送请求可以通过JWT的方式发送,因此,该声明信息可以包含JWT在标准协议中注册的声明信息,示例性的,该声明信息可以包括签发者(例如,签发该JWT的服务器)、签发时间(例如,签发该JWT的时刻)和签发有效时间(例如,该JWT的有效时间段)等相关信息,具体可以参考协议RFC7523,在此不再赘述。此外,该声明信息也可以包括其他相关信息,本申请实施例对该声明信息的具体内容和形式不作特殊限定。
进一步地,因为在消息提供方110的本地数据库中保存有应用程序与应用密钥的映射关系,当消息提供方110获取到上述声明信息、音乐应用131身份标识及地图应用132身份标识后,可以利用该映射关系,根据音乐应用131身份标识查询获得对应的音乐应用密钥,根据地图应用132身份标识查询获得对应的地图应用密钥。并使用音乐应用密钥对该声明信息、音乐应用131身份标识及地图应用132身份标识进行摘要提取,由此可以得到与音乐应用131身份标识对应的音乐应用摘要。同样地,消息提供方110还可以使用地图应用密钥对该声明信息、音乐应用131身份标识及地图应用132身份标识进行摘要提取,由此可以得到与地图应用132身份标识对应的地图应用摘要。其中,摘要提取的方式可以是通过HASHMAC512方式,也可以通过其他摘要提取的方式,本申请实施例对此不作特殊限定。
需要说明的是,消息提供方110进行摘要提取时,也可以不对声明信息进行摘要提取。示例性的,消息提供方110可以对音乐应用131身份标识及地图应用132身份标识进行摘要提取,由此可以得到与音乐应用131身份标识对应的音乐应用摘要,以及对音乐应用131身份标识及地图应用132身份标识进行摘要提取,由此可以得到与地图应用132身份标识对应的地图应用摘要。也就是说,声明信息为消息提供方110进行摘要提取时的可选信息。
步骤204,消息提供方110向消息推送方120发送待推送消息及消息推送请求,其中,消息推送请求包含声明信息、音乐应用131身份标识、地图应用132身份标识、音乐应用摘要及地图应用摘要。
具体地,当消息提供方110获取到音乐应用摘要及地图应用摘要之后,可以根据该声明信息、音乐应用131身份标识、地图应用132身份标识、音乐应用摘要及地图应用摘要生成消息推送请求;其中,该消息推送请求可用于消息提供方100向消息推送方120请求推送提供方110发送的待推送消息,该消息推送请求的形式可以是JWT的形式。
现结合图3A和图3B进行说明,如图3A所示为现有的JWT格式的消息推送请求数据包300,数据包300包括头部、载荷及签名。数据包300的头部包含应用程序身份标识字段(sub)及第一字段(aa),该sub字段用于指示应用程序的身份标识在载荷中的位置,该aa字段用于标识声明信息在载荷中的位置;数据包300的载荷可以包含声明信息及与sub字段对应的信息(例如,应用程序的身份标识);数据包300的签名用于消息提供方的身份的合法性,例如,消息推送方120可以对消息提供方110的身份进行验证,以确定该消息提供方110的身份的合法性;其中,该签名可以用于标识消息提供方110的身份。也就是说,通过对该签名的验证可以对该消息提供方110本次的消息推送请求进行验证,以确定该消息推送请求是否合法。由上述数据包300可知,数据包300只包含应用程序身份标识字段,消息推送方200收到该数据包300后,无法验证消息提供方110与消息接收方130之间的对应关系,因此,消息推送方200直接将待推送消息推送至与载荷信息中应用程序身份标识对应的消息接收方130,由此可能造成消息串网,带来数据安全问题。
如图3B所示为本申请的JWT格式的消息推送请求数据包310,数据包310可以包括头部、载荷及签名;该数据包310的头部除应用程序身份标识字段(sub)及第一字段(aa)之外,还可以包括摘要字段(vfs),也可以包括其他字段,本申请实施例对此不作限定。其中,该vfs字段用于标识摘要信息在载荷中的位置;该数据包310的载荷可以包括声明信息、应用程序身份标识信息以及摘要信息。其中,应用程序身份标识信息与sub字段对应,摘要信息与vfs字段对应,声明信息与aa字段对应。应用程序身份标识信息包含音乐应用131身份标识及地图应用132身份标识。摘要信息包含音乐应用摘要及地图应用摘要。该数据包310的签名与数据包300的签名的作用相同,在此不再赘述。数据包310携带了摘要信息(例如,音乐应用摘要和地图应用摘要),因此,消息推送方200可以根据该摘要信息进行验证,以确定是否可以将本次的待推送消息发送至已安装音乐应用和地图应用的移动终端,由此可以避免消息串网,保证数据安全。
进一步地,当消息提供方110生成上述消息推送请求之后,可以随同本次待推送的待推送消息一起发送给消息推送方120,使得该消息推送方120可以将该待推送的待推送消息推送至与上述音乐应用131身份标识和/或地图应用132身份标识对应的消息接收方130(例如,已安装音乐应用131和/或地图应用132的移动终端)。
步骤205,消息推送方120读取该消息推送请求。
具体地,消息推送方120收到消息提供方110的消息推送请求后,可以对该消息推送请求进行读取,以获得该消息推送请求中的声明信息、音乐应用131身份标识、地图应用132身份标识、音乐应用摘要及地图应用摘要。
在具体实现时,可以通过消息推送方120中的推送系统121对上述消息推送请求进行读取,由此可以得到声明信息、音乐应用131身份标识、地图应用132身份标识、音乐应用摘要及地图应用摘要,并可以将上述声明信息、音乐应用131身份标识、地图应用132身份标识、音乐应用摘要及地图应用摘要发送至消息推送方120中的验证系统122,使得该验证系统122可以根据上述声明信息、音乐应用131身份标识、地图应用132身份标识、音乐应用摘要及地图应用摘要进行验证。
可选地,在消息推送方120对该消息推送请求进行验证之前,还可以根据该消息推送请求中的签名信息进行身份验证,其中,该签名信息可以用于验证该消息提供方110的身份的合法性,如果该签名验证通过,说明该消息提供方110的身份合法,可以进一步进行验证,以确定消息提供方110可以向哪些消息接收方130推送待推送消息,如果签名验证失败,则消息推送方120可以直接结束本次验证,并可以返回失败消息给消息提供方110,用于告知该消息提供方110本次消息推送任务失败。
需要说明的是,该JWT还可以应用在其他场景,因此在本申请实施例的应用场景下,可以在消息提供方110与消息推送方120之间添加与该JWT对应的验证接口,例如,第一接口,该第一接口可以用于传输该JWT,代码示例如下:
POST/token.oauth2 HTTP/1.1
Host:as.example.com
Content-Type:application/x-www-form-urlencoded
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer-with-vfs
&assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi[…with-vfs].J9l-ZhwP[...omitted for brevity...]。
步骤206,消息推送方120根据音乐应用131身份标识及地图应用132身份标识进行查询,得到与音乐应用131身份标识对应的音乐应用密钥及与地图应用132身份标识对应的地图应用密钥。
具体地,因为在消息推送方120的本地数据库中保存有应用程序与应用密钥的映射关系,当消息推送方120通过读取获取到上述音乐应用131身份标识及地图应用132身份标识后,可以根据该音乐应用131身份标识及地图应用132身份标识在消息推送方120的本地数据库中进行查询该映射关系,由此可以得到与音乐应用131身份标识对应的音乐应用密钥及与地图应用132身份标识对应的地图应用密钥。
在具体实现时,该本地数据库可以设置在消息推送方120中的验证系统122中,因此,当该验证系统122收到推送系统121发送的音乐应用131身份标识及地图应用132身份标识后,可以根据音乐应用131身份标识及地图应用132身份标识在上述验证系统122的本地数据库中进行查询,由此可以得到与音乐应用131身份标识对应的音乐应用密钥及与地图应用132身份标识对应的地图应用密钥。
需要说明的是,若通过上述验证系统122的查询,没有查询到与音乐应用131身份标识对应的音乐应用密钥和与地图应用132身份标识对应的地图应用密钥中的任一个应用密钥,则可以认为本次消息推送请求非法,因此,验证系统122可以向推送系统121发送验证失败消息,推送系统121收到上述验证失败消息后,可以结束本次验证,并向消息提供方110反馈失败消息,用于通知消息提供方110本次消息推送任务失败。
步骤207,消息推送方120使用音乐应用密钥对声明信息、音乐应用131身份标识及地图应用132身份标识进行摘要提取,生成音乐应用摘要,并使用地图密钥对声明信息、音乐应用131身份标识及地图应用132身份标识进行摘要提取,生成地图应用摘要。
具体地,当消息推送方120通过查询获取到音乐应用密钥和地图应用密钥后,可以使用音乐应用密钥对上述声明信息、音乐应用131身份标识及地图应用132身份标识进行摘要提取,以生成对应的音乐应用摘要,并使用地图应用密钥对上述声明信息、音乐应用131身份标识及地图应用132身份标识进行摘要提取,以生成对应的地图应用摘要。其中,摘要提取的方式可以同步骤203中的方式,例如,HASHMAC512方式,在此不再赘述。
步骤208,消息推送方120将在消息推送方120处生成的音乐应用摘要与消息推送请求中的音乐应用摘要进行比对,以及将在消息推送方120处生成的地图应用摘要与消息推送请求中的地图应用摘要进行比对。
具体地,消息推送方120生成音乐应用摘要和地图应用摘要后,可以将生成的音乐应用摘要与消息推送请求中的音乐应用摘要进行比对,以及将生成的地图应用摘要与消息推送请求中的地图应用摘要进行比对,以完成对消息推送请求的验证。
步骤209,若音乐应用摘要比对和地图应用摘要比对都通过,则消息推送方120将待推送消息推送送给安装音乐应用131和/或地图应用132的消息接收方130。
具体地,若音乐应用摘要比对和地图应用摘要比对都通过,例如,消息推送方120生成的音乐应用摘要与消息推送请求中的音乐应用摘要一致,以及消息推送方120生成的地图应用摘要与消息推送请求中的地图应用摘要一致,则可以认为对消息推送请求的验证通过,消息推送方120可以将待推送消息推送给安装音乐应用131和/或地图应用132的消息接收方130。
步骤210,若音乐应用摘要比对和地图应用摘要比对中有任一个比对不通过,则消息推送方120向消息提供方110返回验证失败消息。
具体地,若音乐应用摘要比对和地图应用摘要比对中有任一个比对不通过,则可以认为对消息推送请求的验证失败。消息推送方120可以发送验证失败消息给消息提供方110,用于通知消息提供方110本次消息推送任务失败,并结束本次消息推送。
本实施例中,通过在消息推送方120处根据消息推送请求中的摘要信息进行验证,以确定消息推送请求中的摘要信息与消息推送方120生成的摘要信息是否一致,并进一步可以确定待推送消息是否可以发送至消息推送请求中应用程序身份标识对应的应用程序,由此可以避免消息串网,进而可以提高消息推送的安全性。
上述图2和图3以消息提供方110发送分别与音乐应用131和地图应用132对应的两条待推送消息,并通过摘要比对为例进行了说明,可以理解的是,消息提供方110也可以只给一个、或多于两个的应用推送消息,其原理都类似,在此不再赘述。
下面以消息提供方110分别发送与音乐应用131和地图应用132对应的两条待推送消息,并通过数据源比对为例进行说明另一种消息推送方法。
如图4所示为本申请消息推送方法另一个实施例的交互流程图,包括:
步骤401,消息提供方110向消息推送方120发送身份注册请求,以获得消息提供方110的身份标识。
具体地,该身份注册请求可以用于消息提供方110向消息推送方120请求获得消息提供方110的身份标识。需要说明的是,消息提供方110本身具有身份标识,该本身的身份标识用于在网络中对消息提供方110进行识别,但是不同于消息提供方本身的身份标识,该请求获得的身份标识用于后续在消息推送方120处对消息推送请求进行验证,其中,该请求获得的身份标识可以用数字来表征。为了表述方便,以下提及的消息提供方110的身份标识指代消息提供方110请求获得或者消息推送方120为消息提供方110分配的身份标识。
其中,该身份注册请求可以包括身份注册类型,该身份注册类型用于消息推送方120识别消息提供方110本次注册的目标对象,通过身份注册类型可以识别本次是给应用程序注册身份标识,还是给消息提供方110注册身份标识。示例性的,身份注册类型可以包括应用类型和服务方类型,若消息推送方120识别出是应用类型,则可以为应用程序注册身份标识,以完成应用程序在消息推送方120上的身份注册;若消息推送方120识别出是服务方类型,则可以为消息提供方110注册一个身份标识,以完成消息提供方110在消息推送方120上的身份注册。
此外,该身份注册请求还可以包括数据源,该数据源可以用于表征消息提供方110提供的各项服务的数据的源地址,该数据源可以和该消息提供方110对应,示例性的,该数据源可以是该消息提供方110存储业务数据的目标服务器地址,例如,假设消息提供方110可以提供订餐服务、音乐服务和地图服务,则提供上述订餐服务、音乐服务和地图服务的服务器地址可以是同一个地址,也就是说,与消息提供方110对应的数据源与属于同一个消息提供方110的所有应用程序(例如,订餐应用、音乐应用、地图应用等)的数据源应相同,即数据源为同一个,而用户可以通过移动终端上的订餐应用接收订餐服务、通过移动终端上的音乐应用131接收音乐服务,以及通过移动终端上的地图应用132接收地图服务。在具体实现时,该数据源可以通过唯一的IP地址进行表征,也可以通过唯一的ID号进行表征,本申请实施例对此不作限定。
在具体实现时,可以在该身份注册请求中携带两个字段,例如,数据源(source)字段及类型(evidence)字段,其中,该source字段可以用于标识与消息提供方110对应的数据源,该evidence字段可以用于标识本次注册的身份注册类型。其中,该evidence字段可以包括两种数值类型,例如,字符类型和数字类型。示例性的,若evidence字段取值为字符串NEW_APP,也就是说,evidence字段的数值类型为字符类型,由此可以使得消息推送方根据该身份注册请求确定本次身份注册类型为服务方类型,也就是说,本次是给消息提供方110注册身份标识,
进一步地,消息提供方110和消息推送方120之间还可以建立注册接口,以便消息提供方110可以调用该注册接口,用于传输该身份注册请求,完成该身份注册过程,代码示例如下:
POST/register HTTP/1.1
Content-Type:application/json
Accept:application/json
Host:server.example.com
{
"redirect_uris":[
"https://client.example.org/callback",
"https://client.example.org/callback2"],
"client_name":"My Example Client",
"client_name#ja-Jpan-JP":"\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u540D",
"token_endpoint_auth_method":"client_secret_basic",
"logo_uri":"https://client.example.org/logo.png",
"jwks_uri":"https://client.example.org/my_public_keys.jwks",
"example_extension_parameter":"example_value",
"source":"example_source",
"evidence":"example_evidence"
}。
步骤402,消息推送方120读取身份注册请求,得到身份注册请求中的身份注册类型。
步骤403,判断本次身份注册类型为服务方类型,则消息推送方120分配消息提供方110的身份标识,将该消息提供方110的身份标识与身份注册请求中的数据源进行关联后存储。
具体地,当消息推送方120收到该身份注册请求后,对该身份注册请求进行读取,得到身份注册请求中的数据源及身份注册类型。若经过读取后确定身份注册类型为服务方类型,则可以为消息提供方110分配身份标识,并可以将该消息提供方110的身份标识与身份注册请求中的数据源进行关联后存储,然后可以将该消息提供方110的身份标识发送给消息提供方110。其中,与该消息提供方110的身份标识关联存储的数据源可以认为是服务方数据源。
在具体实现时,消息提供方110的身份注册请求可以直接发送给消息推送方120的验证系统122,验证系统122收到该身份注册请求后,可以首先读取该身份注册请求中的evidence字段,若evidence字段取值为字符串,示例性的,可以是NEW_APP,则可以认为本次是分配消息提供方110的身份标识,该验证系统122可以分配一个身份标识,该分配的身份标识作为该消息提供方110后续用于验证的身份标识,其中,该消息提供方110的身份标识可以是数字。接着验证系统122可以将该消息提供方110的身份标识与身份注册请求中的source字段信息进行关联后存储在验证系统122中的本地数据库中,并可以将该消息提供方110的身份标识返回给消息提供方110,由此消息提供方110完成了消息提供方110身份标识在消息推送方120上的注册任务。
其中,在验证系统122解析出evidence字段信息后,还可以进一步读取source字段信息,并可以在验证系统122的本地数据库中查询是否已存在与该source字段信息对应的数据源,若已存在与该source字段信息对应的数据源,则可以认为该数据源已被注册,即可以结束本次注册请求,并可以向消息提供方110返回失败消息,用于通知消息提供方本次注册失败。若不存在与该source字段信息对应的数据源,则可以分配消息提供方110的身份标识。
步骤404,消息推送方120将该分配的消息提供方110的身份标识发送给消息提供方110。
步骤405,消息提供方110向消息推送方120发送身份注册请求,以获得应用程序的身份标识。
类似地,该应用程序的身份标识不同于本身的身份标识,是请求分配的、后续用于消息推送请求验证的身份标识。为了表述方便,以下提及的应用程序的身份标识指代消息提供方110为应用程序请求获得或者消息推送方120为应用程序分配的身份标识。
具体地,消息提供方110在消息推送方120上完成注册之后,也就是说,消息提供方110获得由消息推送方120分配的身份标识之后,还可以通过身份注册请求对与消息提供方110对应的应用程序注册身份标识。示例性的,若消息提供方110包含订餐应用、音乐应用及地图应用,则消息提供方110可以为订餐应用、音乐应用及地图应用进行注册,以获得与订餐应用、音乐应用及地图应用对应的身份标识。需要说明的是,消息提供方110可以通过一个身份注册请求为一个应用程序注册身份标识,消息提供方110也可以通过一个身份注册请求分别为多个应用程序注册身份标识,本申请实施例对此不作特殊限定。
在具体实现时,如前所述,因为为消息提供方110分配的身份标识可以用数字表征,那么就可以将evidence字段的取值设为消息提供方110的身份标识,也就是说,一来,evidence字段的数值类型为消息提供方110的身份标识表征的数字类型,由此可以使得消息推送方120可以根据该身份注册请求确定本次身份注册类型为应用类型,也就是说,表明本次是给消息提供方110中对应的应用程序注册身份标识,二来,也可以同时表明本次注册的应用程序与evidence字段的数值所对应的消息提供方110相关联。例如,假设evidence字段的取值对应的消息提供方为AA,则可以给消息提供方AA所属的音乐应用131注册身份标识,或给消息提供方AA所属的地图应用132注册身份标识,或给消息提供方AA所属的其他应用程序(订餐应用)注册身份标识。
步骤406,消息推送方120读取身份注册请求,得到身份注册请求中的身份注册类型。
步骤407,判断本次身份注册类型为应用类型,则消息推送方120分配应用程序的身份标识,将该应用程序的身份标识与数据源进行关联后存储。
具体地,若消息推送方120通过对身份注册请求的读取,确定身份注册类型为应用类型,则可以分配应用程序的身份标识,并可以将该应用程序的身份标识与身份注册请求中的数据源进行关联后存储,然后可以将该应用程序的身份标识发送给消息提供方110。其中,与应用程序关联存储的数据源可以认为是应用数据源,例如,与音乐应用关联存储的数据源可以认为是音乐应用数据源,与地图应用关联存储的数据源可以认为是地图应用数据源,与订餐应用关联存储的数据源可以认为是订餐应用数据源等。
在具体实现时,消息提供方110的身份注册请求可以直接发送给消息推送方120的验证系统122,验证系统122收到该身份注册请求后,可以首先读取该身份注册请求中的evidence字段,若evidence字段取值为数字,则可以认为本次是分配应用程序的身份标识。如前所述,该evidence字段的取值可以为消息提供方110的身份标识,一来可以确定是为应用程序分配身份标识,二来还可以知道本次注册的应用程序是与evidence字段中的数字取值对应的消息提供方110对应的应用程序。接着可以根据该evidence字段中的该消息提供方110的身份标识在验证系统122中的本地数据库中进行查询,以得到与该消息提供方110的身份标识对应的服务方数据源,并可以将查询获得的数据源与身份注册请求中的source字段信息对应的数据源进行比对,若查询获得的服务方数据源与身份注册请求中的source字段信息对应的数据源不一致,则可以结束本次注册请求,并可以向消息提供方110返回失败消息,用于通知消息提供方本次注册失败。若查询获得的服务方数据源与身份注册请求中的source字段信息对应的数据源一致,则可以分配应用程序的身份标识,将该应用程序的身份标识与身份注册请求中的source字段信息对应的数据源进行关联后存储,并将该应用程序的身份标识发送给消息提供方110,由此消息提供方110完成了应用程序的身份标识在消息推送方120上的注册任务。
步骤408,消息推送方120将该分配的应用程序的身份标识发送给消息提供方110。
步骤409,消息提供方110将消息推送请求及待推送消息发送给消息推送方120。
具体地,消息提供方110完成上述身份注册任务后,可以将消息推送请求及待推送消息发送给消息推送方120。示例性的,该消息推送请求可以包括消息提供方110的身份标识、音乐应用131的身份标识及地图应用132的身份标识,该消息推送请求的形式可以是JWT的形式。
现结合图5进行说明,如图5所示,该JWT可以包括头部、载荷及签名。该JWT头部可以包括多个字段,示例性的,该JWT头部可以包括应用程序身份标识字段(sub)及消息提供方身份标识字段(aud),其中,该sub字段用于标识应用程序身份标识在载荷中的位置,该aud字段用于标识消息提供方身份标识在载荷中的位置。该载荷可以包括与字段信息对应的数据信息,示例性的,该数据信息可以包括与sub字段对应的应用程序身份标识信息(例如,音乐应用131的身份标识及地图应用132的身份标识)及与aud字段对应的消息提供方110的身份标识信息。
步骤410,消息推送方120读取消息推送请求,得到消息提供方110的身份标识、音乐应用131的身份标识及地图应用132的身份标识。
具体地,消息推送方120收到消息推送请求后,可以对该消息推送请求进行读取,由此可以得到消息推送请求中的应用程序身份标识(例如,音乐应用131的身份标识及地图应用132的身份标识)及消息提供方110的身份标识。
在具体实现时,消息提供方110可以将消息推送请求发送给消息推送方120的推送系统121,因此,消息提供方110与推送系统121之间还可以建立第二接口,用于传输上述消息推送请求;代码示例如下:
POST/token.oauth2 HTTP/1.1
Host:as.example.com
Content-Type:application/x-www-form-urlencoded
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer-with-sou rce
&assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi[...omittedfor brevity...].J9l-ZhwP[...omitted for brevity...]。
步骤411,消息推送方120根据该音乐应用131的身份标识、地图应用132的身份标识及消息提供方110的身份标识进行查询,得到与音乐应用131的身份标识对应的音乐数据源、与地图应用132的身份标识对应的地图数据源及与消息提供方110的身份标识对应的服务方数据源。
具体地,消息推送方120获取到消息推送请求中的消息提供方110的身份标识、音乐应用131的身份标识及地图应用132的身份标识后,可以通过查询获得与上述音乐应用131的身份标识及地图应用132的身份标识对应的应用数据源(例如,与音乐应用131的身份标识对应的音乐应用数据源及与地图应用132的身份标识对应的地图应用数据源),以及与消息提供方110的身份标识对应的服务方数据源。
在具体实现时,消息推送方120的推送系统121通过读取得到音乐应用131的身份标识、地图应用132的身份标识及消息提供方110的身份标识后,可以将该音乐应用131的身份标识、地图应用132的身份标识及消息提供方110的身份标识发送给验证系统122,验证系统122收到上述音乐应用131的身份标识、地图应用132的身份标识及消息提供方110的身份标识后,可以在验证系统122中的本地数据库中进行查询,可以分别得到与上述音乐应用131的身份标识、地图应用132的身份标识及消息提供方110的身份标识对应的音乐应用数据源、地图应用数据源及服务方数据源。
进一步地,当验证系统122通过查询,如果音乐应用数据源、地图应用数据源及服务方数据源中至少有一个数据源不存在,则可以认为当前的音乐应用131的身份标识、地图应用132的身份标识及消息提供方110的身份标识中存在仿冒者,因此可以结束本次验证,并可以向推送系统121返回验证失败消息,当推送系统121收到上述验证失败消息后,可以停止本次消息推送任务,并可以向消息提供方110返回失败消息。
步骤412,消息推送方120将音乐应用数据源、地图应用数据源及服务方数据源进行比对。
具体地,上述数据源比对可以包括分别将音乐应用数据源及地图应用数据源与服务方数据源进行比对。在具体实现时,当消息推送方120的验证系统122查询得到上述音乐应用数据源、地图应用数据源和服务方数据源后,可以分别将该音乐应用数据源、地图应用数据源与服务方数据源进行比对。示例性的,可以先将音乐应用数据源与服务方数据源进行比对,然后将地图应用数据源与服务方数据源进行比对;也可以先将地图应用数据源与服务方数据源进行比对,然后将音乐应用数据源与服务方数据源进行比对;也可以同时将音乐应用数据源与服务方数据源进行比对,以及将地图应用数据源与服务方数据源进行比对,本申请实施例对此不作特殊限定。
步骤413,若上述数据源比对均一致,则将消息提供方110发送的待推送消息推送给安装音乐应用131和/或地图应用132的消息接收方130。
具体地,若上述数据源比对均一致,则消息推送方120可以将消息提供方110发送的的待推送消息推送给安装音乐应用131和/或地图应用132的消息接收方130。示例性的,若音乐应用数据源与服务方数据源比对一致,且地图应用数据源与服务方数据源比对一致,则可以认为数据源比对均一致。
在具体实现时,在验证系统122中对上述数据源进行比对,确定上述数据源均一致,例如,音乐应用数据源与服务方数据源一致,且地图应用数据源与服务方数据源一致,则可以认为本次验证成功,验证系统122可以向推送系统121发送验证成功消息;推送系统121收到验证系统122的验证成功消息后,则可以将本次接收到的待推送消息推送给安装音乐应用131和/或地图应用132的消息接收方130。
步骤414,若上述数据源比对中至少有一组数据源比对不一致,则结束本次消息推送任务,并可以向消息提供方110返回验证失败消息。
具体地,若上述数据源比对中至少有一组数据源比对不一致,则可以认为验证失败,消息推送方120可以结束本次消息推送任务。示例性的,若音乐应用数据源与服务方数据源比对不一致,和/或地图应用数据源与服务方数据源比对不一致,则可以认为数据源比对不一致。
在具体实现时,在验证系统122中对上述数据源进行比对,确定上述数据源中至少有一组数据源比对不一致,例如,音乐应用数据源与服务方数据源不一致和/或地图应用数据源与服务方数据源不一致,则可以认为本次验证失败。验证系统122可以向推送系统121发送验证失败消息。若推送系统121收到验证系统122的验证失败消息,可以停止本次消息推送任务,并可以向消息提供方110返回验证失败消息。
本实施例中,通过在消息推送方120处根据消息推送请求中的数据源进行验证,以确定本次待推送消息对应的应用程序的数据源与消息提供方的数据源是否一致,并进一步可以确定待推送消息是否可以发送至与消息推送请求中应用程序身份标识对应的应用程序,由此可以避免消息串网,进而可以提高消息推送的安全性。
图6为本申请消息推送装置一个实施例的结构示意图,如图6所示,上述消息推送装置60可以包括:创建模块61、发送模块62、接收模块63、验证模块64及推送模块65;
创建模块61,用于创建应用程序身份标识与预设密钥之间的映射关系;
发送模块62,用于将映射关系发送至消息提供方;
接收模块63,用于接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括第一信息及用于进行验证的第一摘要,第一摘要由消息提供方使用预设密钥对第一信息进行摘要提取后获得,第一信息至少包括应用程序身份标识;
验证模块64,用于查询是否存在与消息推送请求中的应用程序身份标识对应的预设密钥;若存在与应用程序身份标识对应的预设密钥,使用预设密钥对消息推送请求中的第一信息进行摘要提取,获得第二摘要;
推送模块65,用于将第二摘要与第一摘要进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
在一种可能的实现方式中,上述消息推送装置60还可以包括:验签模块66;
验签模块66,用于根据签名对消息推送请求进行身份验证,以确定消息提供方的身份是否合法。
在一种可能的实现方式中,上述验证模块64还可以用于若不存在与应用程序身份标识对应的预设密钥,则终止本次待推送消息的推送。
在一种可能的实现方式中,第一信息包括多个应用程序身份标识,消息推送请求包括多个与应用程序身份标识对应的第一摘要,上述验证模块64还可以用于分别使用与应用程序身份标识对应的预设密钥对消息推送请求中的第一信息进行摘要提取,获得多个与应用程序身份标识对应的第二摘要。
在一种可能的实现方式中,上述推送模块65还可以用于分别将对应同一个应用程序身份标识的第一摘要和第二摘要进行比对;若所有应用程序身份标识的第一摘要和第二摘要比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
图7为本申请消息推送装置另一个实施例的结构示意图,如图7所示,上述消息推送装置70可以包括:接收模块71、验证模块72及推送模块73;
接收模块71,用于接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括应用程序身份标识及消息提供方身份标识;
验证模块72,用于查询是否存在与消息推送请求中的应用程序身份标识对应的第一数据源及与消息推送请求中的消息提供方身份标识对应的第二数据源;
推送模块73,用于若存在第一数据源及第二数据源,则将第一数据源与第二数据源进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
在一种可能的实现方式中,上述消息推送装置70还包括:注册模块74;
注册模块74,用于接收消息提供方发送的身份注册请求,其中,身份注册请求包括数据源及身份注册类型,身份注册类型包括第一类型及第二类型;若判断身份注册类型为第一类型,则数据源包括第一数据源,分配消息提供方身份标识,将消息提供方身份标识与第一数据源进行关联后存储,并将消息提供方身份标识发送给消息提供方;若判断身份注册类型为第二类型,则数据源包括第二数据源,分配应用程序身份标识,将应用程序身份标识与第二数据源进行关联后存储,并将应用程序身份标识发送给消息提供方。
在一种可能的实现方式中,若判断身份注册类型为第二类型,则身份注册请求还包括消息提供方身份标识,上述消息推送装置70还包括:核查模块75;
核查模块75,用于基于消息提供方身份标识进行查询,获得对应的第一数据源;将查询获得的第一数据源与身份注册请求中的第二数据源进行比对,基于比对结果确定是否分配应用程序身份标识。
在一种可能的实现方式中,消息推送请求包括多个应用程序身份标识,上述推送模块73还可以用于分别将每个与应用程序身份标识对应的第一数据源与第二数据源进行比对;若所有的第一数据源与第二数据源均一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
应理解以上图6和图7所示的消息推送装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,检测模块可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit;以下简称:ASIC),或,一个或多个微处理器(Digital Singnal Processor;以下简称:DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array;以下简称:FPGA)等。再如,这些模块可以集成在一起,以片上系统(System-On-a-Chip;以下简称:SOC)的形式实现。
图8为本申请电子设备一个实施例的结构示意图,其中,消息推送方120可以是上述电子设备;如图8所示,上述电子设备可以是数据处理设备,例如,服务器,也可以是内置于上述数据处理设备的电路设备。该电子设备可以用于执行本申请图1-图5所示实施例提供的方法中的功能/步骤。
如图8所示,电子设备800以通用计算设备的形式表现。
上述电子设备可以包括:一个或多个处理器810;通信接口820;存储器830;连接不同系统组件(包括存储器830和处理器810)的通信总线840,数据库850;以及一个或多个计算机程序。
其中,上述一个或多个计算机程序被存储在上述存储器中,上述一个或多个计算机程序包括指令,当上述指令被上述电子设备执行时,使得上述电子设备执行以下步骤:
创建应用程序身份标识与预设密钥之间的映射关系;
将映射关系发送至消息提供方;
接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括第一信息及用于进行验证的第一摘要,第一摘要由消息提供方使用预设密钥对第一信息进行摘要提取后获得,第一信息至少包括应用程序身份标识;
查询是否存在与消息推送请求中的应用程序身份标识对应的预设密钥;
若存在与应用程序身份标识对应的预设密钥,使用预设密钥对消息推送请求中的第一信息进行摘要提取,获得第二摘要;
将第二摘要与第一摘要进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
其中一种可能的实现方式中,上述消息推送请求还包括消息提供方的签名,上述指令被上述电子设备执行时,使得上述电子设备执行将第二摘要与第一摘要进行比对之前,还执行以下步骤:
根据签名对消息提供方进行身份验证,以确定消息提供方的身份是否合法。
其中一种可能的实现方式中,上述指令被上述电子设备执行时,使得上述电子设备还执行以下步骤:
若不存在与应用程序身份标识对应的预设密钥,则终止本次待推送消息的推送。
其中一种可能的实现方式中,第一信息包括多个应用程序身份标识,消息推送请求包括多个与应用程序身份标识对应的第一摘要,上述指令被上述电子设备执行时,使得上述电子设备执行使用预设密钥对消息推送请求中的第一信息进行摘要提取,获得第二摘要的步骤包括:
分别使用与应用程序身份标识对应的预设密钥对消息推送请求中的第一信息进行摘要提取,获得多个与应用程序身份标识对应的第二摘要。
其中一种可能的实现方式中,上述指令被上述电子设备执行时,使得上述电子设备执行将第二摘要与第一摘要进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方的步骤包括:
分别将对应同一个应用程序身份标识的第一摘要和第二摘要进行比对;
若所有应用程序身份标识的第一摘要和第二摘要比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
本申请实施例还提供一种电子设备,如图8所示,其中,上述一个或多个计算机程序被存储在上述存储器中,上述一个或多个计算机程序包括指令,当上述指令被上述电子设备执行时,使得上述电子设备执行以下步骤:
接收消息提供方发送的待推送消息及消息推送请求,其中,消息推送请求包括应用程序身份标识及消息提供方身份标识;
查询是否存在与消息推送请求中的应用程序身份标识对应的第一数据源及与消息推送请求中的消息提供方身份标识对应的第二数据源;
若存在第一数据源及第二数据源,则将第一数据源与第二数据源进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
其中一种可能的实现方式中,上述指令被上述电子设备执行时,使得上述电子设备执行接收消息提供方发送的待推送消息及消息推送请求的步骤之前,还执行以下步骤:
接收消息提供方发送的身份注册请求,其中,身份注册请求包括数据源及身份注册类型,身份注册类型包括第一类型及第二类型;
若判断身份注册类型为第一类型,则数据源包括第一数据源,分配消息提供方身份标识,将消息提供方身份标识与第一数据源进行关联后存储,并将消息提供方身份标识发送给消息提供方;
若判断身份注册类型为第二类型,则数据源包括第二数据源,分配应用程序身份标识,将应用程序身份标识与第二数据源进行关联后存储,并将应用程序身份标识发送给消息提供方。
其中一种可能的实现方式中,若判断身份注册类型为第二类型,则身份注册请求还包括消息提供方身份标识,上述指令被上述电子设备执行时,使得上述电子设备还执行以下步骤:
基于消息提供方身份标识进行查询,获得对应的第一数据源;
将查询获得的第一数据源与身份注册请求中的第二数据源进行比对,基于比对结果确定是否分配应用程序身份标识。
其中一种可能的实现方式中,消息推送请求包括多个应用程序身份标识,上述指令被上述电子设备执行时,使得上述电子设备执行将第一数据源与第二数据源进行比对,若比对一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方的步骤包括:
分别将每个与应用程序身份标识对应的第一数据源与第二数据源进行比对;
若所有的第一数据源与第二数据源均一致,则将待推送消息推送至与应用程序身份标识对应的消息接收方。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行本申请图1-图5所示实施例提供的方法。
本申请实施例可以根据上述方法示例对上述设备等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。