轉載請附原文鏈接:http://blog.fandong.me/2017/08/13/iOS-SwiftVaporWeb19/
前言
之前一直有做Java后臺開發的興趣,可是想到要看好多的Java教程,作為一個iOS開發者,我放棄了,
后來從朋友韓云智VL那里知道了這個框架,竟是用Swift寫的,不得不說,它燃起了我的興趣。
Vapor是一個基于Swift開發的服務端框架,可以工作于iOS,Mac OS,Ubuntu。
為了配合Swift部署到服務器,我把ECS的服務器系統改為Ubuntu16.04。
JWT概述
這份指導提供了使用JWT提供程序包的概述
配置
JWTProvider
可以通過三種方式來初始化
- 定制的自定義簽名者
jwt.json
- 支持(私有/公共)
hmac
rsa
esdca
- 傳統的自定義簽名者定義
jwt.json
- 支持(私有/公共)
hmac
rsa
esdca
- 遠程
jwt.json
遠程文件鏈接 - 支持(私有/公共)
rsa
如果你的Vapor應用程序作為身份驗證程序,您可能需要使用Legacy custom signer
安裝程序或Custom signers
設置,如果要執行證書更換,那這應該是比較好的.
唯一的區別是JWT
頭中Custom signers
的kid
值不被忽略,并且它必須與相關聯的簽名者匹配才能驗證簽名.
如果你的Vapor應用程序是將認證委托給第三方(auth0,stormpath等)的資源提供者,則可能需要使用Remote JSON Web Key Set
設置,在此配置中,JWT令牌由提供JSONWeb密鑰集格式的第三方生成,Vapor僅負責驗證JWT
使用第三方提供的密鑰集.
遠程JSON Web密鑰集
Config/jwt.json
{
"jwks-url" : "http://my-domain.com/well-known/jwks.json"
}
自定義簽名者
這允許指定一組簽名者,特別適用于替換證書,自定義簽名者不能向后兼容,并且必須在配置中指定一個附加的kid
值
- type:
unsigned
,hmac
,esdca
- kid:一個唯一的標識符
- algorithm
- type[hmac]:hs256,hs384,hs512
- type[rsa]:rs256,rs384,rs512
- type[esdca]:es256,es384,es512
Config/jwt.json
{
"signers":[
{
"type":"rsa",
"kid":"1234",
"algorithm":"rs256",
"key":"yourkeyhere"
}
]
}
傳統自定義簽名者
這和以前的實現向后兼容
- type:
unsigned
,hmac
,esdca
- algorithm:
- type[hmac]: hs256, hs384, hs512
- type[rsa]: rs256, rs384, rs512
- type[esdca]: es256, es384, es512
Config/jwt.json
{
“signer” : {
“type” : “rsa” ,
“algorithm” : “rs256” ,
“key” : “yourkeyhere”
}
}