3 Star 8 Fork 1

laozi2 / token-auth-apns-http2-proxy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

##token-auth-apns-http2-proxy

  • A example of proxy to APNs with http2 and token-based authoriation
  • 项目描述: 做一个APN推送项目,目的是实现一个服务,从前端HTTP1.1代理到后端苹果的HTTP2 APNs, 由于没有找到完整可用的基于token认证的例子, 经过探索,在现有开源库的基础上做修改, 实现了该服务。
  • 示例代码里的私钥,iss, kid需要替换成从苹果获取的相关信息

###github.com/dgrijalva/jwt-go 的改动

  • ecdsa_utils.go 新增函数
// Parse PEM encoded Elliptic Curve Private Key Structure
func ParsePKCS8PrivateKeyFromPEM(key []byte) (*ecdsa.PrivateKey, error) {
    var err error

    // Parse PEM block
    var block *pem.Block
    if block, _ = pem.Decode(key); block == nil {
        return nil, ErrKeyMustBePEMEncoded
    }

    // Parse the key
    var parsedKey interface{}
    if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil {
        return nil, err
    }

    var pkey *ecdsa.PrivateKey
    var ok bool
    if pkey, ok = parsedKey.(*ecdsa.PrivateKey); !ok {
        return nil, ErrNotECPrivateKey
    }

    return pkey, nil
}
  • token.go 注释 //"typ": "JWT",

###github.com/sideshow/apns2 改动

  • client.go setHeaders() 里增加
    if n.Authorization != "" {
        r.Header.Set("authorization", n.Authorization)
    }
  • notification 增加
    //The provider token that authorizes APNs to send push notifications for the specified topics.
    //The token is in Base64URL-encoded JWT format, specified as bearer .
    //When the provider certificate is used to establish a connection, this request header is ignored.
    Authorization string

空文件

简介

做一个APN推送项目,目的是实现一个服务,从前端HTTP1.1代理到后端苹果的HTTP2 APNs 展开 收起
Go
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/laozi2/token-auth-apns-http2-proxy.git
git@gitee.com:laozi2/token-auth-apns-http2-proxy.git
laozi2
token-auth-apns-http2-proxy
token-auth-apns-http2-proxy
master

搜索帮助