- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Xcode10
、Swift 5
和 SwiftJWT
生成 JSON Web token
,以便进行身份验证 设备检查API
。下面是方法
let key8 = """
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCq...
-----END PRIVATE KEY-----
"""
let myHeader = Header(kid: m_key)
struct MyClaims: Claims {
let iat: Date
let iss: String
}
var jwt = JWT(header: myHeader, claims: MyClaims(iat: Date(timeIntervalSinceNow: 3600), iss: m_iss))
let privateKey = key8.data(using: .utf8)!
let rsaJWTEncoder = JWTEncoder(jwtSigner: JWTSigner.es256(privateKey: privateKey))
do {
let jwtString = try rsaJWTEncoder.encodeToString(jwt)
print("endcode header: \(jwtString)")
} catch {
print("Failed to encode JWT: \(error)")
}
}
得到的结果类似于eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIs...
使用上面的 header 连接Apple服务器。我不断收到来自 Apple 服务器的响应:401 无法验证授权 token
。
我还尝试从 jwt 创建 JSON Web token
但同样的错误。任何帮助,将不胜感激。提前致谢
最佳答案
我尝试了多种方法来解决该问题。但对我有用的是,这里逐步描述如何使用 DeviceCheck
API 获取设备两位状态。
第 1 步 - 生成 token
let currentDevice = DCDevice.current
if currentDevice.isSupported {
currentDevice.generateToken(completionHandler: { (data, error) in
if let tokenData = data {
print("Token: \(tokenData)")
} else {
print("Error: \(error?.localizedDescription ?? "")")
}
})
}
第 2 步 - 访问和修改每设备数据
创建 APNs 身份验证 token 签名 key
1- 在您的开发者帐户中,转到 Certificates, Identifiers & Profiles .
2 - 在“键”下,选择“全部”,然后单击右上角的“添加”按钮 (+)。
3- 在“ key 描述”下,输入签名 key 的唯一名称。
4- 在“关键服务”下,选中“APN”复选框,然后单击“继续”。
5- 检查 key 配置,然后单击“确认”。
6- (可选)单击“下载”立即生成并下载 key 。如果您下载 key ,它将保存为文件扩展名为 .p8 的文本文件。将文件保存在安全的地方,因为 key 未保存在您的开发者帐户中,您将无法再次下载它。
7- 单击“完成”。
第 3 步 - 为查询请求创建有效负载
func generateJWTToken() -> String{
let key8 = """
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49...
-----END PRIVATE KEY-----
"""
let myHeader = Header(kid: "2YHFSDF45")
let timeStamp = Date.currentTimeStamp
let teamId = "xyz"
let jwt = JWT(header: myHeader, claims: MyClaims(iat:timeStamp, iss: teamId))
let privateKey = key8.data(using: .utf8)!
let rsaJWTEncoder = JWTEncoder(jwtSigner: JWTSigner.es256(privateKey: privateKey))
do {
let jwtString = try rsaJWTEncoder.encodeToString(jwt)
//print(jwtString)
return jwtString
} catch {
print("Failed to encode JWT: \(error)")
}
return ""
}
第4步-查询DeviceCheckApi
要获取设备的两位状态,我们将使用 Alamofire 发出 HTTP 请求至 https://api.devicecheck.apple.com/v1/query_two_bits
//MARK:- method call device check API
func callAppleDeviceCheckApi(_ token: String){
let mUrl : URL = NSURL(string: "https://api.devicecheck.apple.com/v1/query_two_bits") as! URL
let mHeaders = generateJWTToken()
let mDeviceToken = token
let mTimeStampMili = Date.currentTimeStampMili
let headers: HTTPHeaders = ["Authorization": "Bearer "+mHeaders,
"Content-Type" : "application/json"]
let params = ["device_token": mDeviceToken, "transaction_id": "dfgsdfgddfc", "timestamp": mTimeStampMili] as [String : Any]
var request = URLRequest(url: mUrl)
request.httpMethod = "POST"
request.headers = headers
request.httpBody = try! JSONSerialization.data(withJSONObject: params)
AF.request(request).responseString(){
response in
switch response.result {
case .success(let value):
let json = JSON(value)
//print("JSON: \(json)")
case .failure(let error):
print("ERROR: \(error)")
}
}
}
关于ios - 设备检查API : Error: Unable to verify authorization token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58062972/
我正在开发一个应用程序,它使用 OAuth - 基于 token 的身份验证。 考虑到我们拥有访问和刷新 token ,这就是流程的样子。 Api call -> intercepter append
如何取消标记此代码的输出? 类(class)核心: def __init__(self, user_input): pos = pop(user_input) subject = ""
当我使用命令 kubectl 时与 --token标记并指定 token ,它仍然使用 kubeconfig 中的管理员凭据文件。 这是我做的: NAMESPACE="default" SERVICE
我正在制作 SPA,并决定使用 JWT 进行身份验证/授权,并且我已经阅读了一些关于 Tokens 与 Cookies 的博客。我了解 cookie 授权的工作原理,并了解基本 token 授权的工作
我正在尝试从应用服务获取 Google 的刷新 token ,但无法。 日志说 2016-11-04T00:04:25 PID[500] Verbose Received request: GET h
我正在开发一个项目,只是为了为 java 开发人员测试 eclipse IDE。我是java新手,所以我想知道为什么它不起作用,因为我已经知道该怎么做了。这是代码: public class ecli
我正在尝试使用 JwtSecurityTokenHandler 将 token 字符串转换为 jwt token 。但它出现错误说 IDX12709: CanReadToken() returned
我已阅读文档 Authentication (来自 Facebook 的官方)。我仍然不明白 Facebook 提供的这三种访问 token 之间的区别。网站上给出了一些例子,但我还是不太明白。 每个
我的部署服务器有时有这个问题,这让我抓狂,因为我无法在本地主机中重现,我已经尝试在我的 web.config 中添加机器 key ,但没有成功远。 它只发生在登录页面。 我的布局:
我已经设法获得了一个简单的示例代码,它可以创建一个不记名 token ,还可以通过阅读 stackoverflow 上的其他论坛来通过刷新 token 请求新的不记名 token 。 启动类是这样的
如果我有以前的刷新 token 和使用纯 php 的访问 token ,没有 Google Api 库,是否可以刷新 Google Api token ?我在数据库中存储了许多用户刷新和访问 toke
我通过 Java 应用程序使用 Google 电子表格时遇到了问题。我创建了应用程序,该应用程序运行了 1 年多,没有任何问题,我什至在 Create Spreadsheet using Google
当我有一个有效的刷新 token 时,我正在尝试使用 Keycloak admin REST API 重新创建访问 token 。 我已经通过调用 POST/auth/realms/{realm}/p
我正在尝试让第三方 Java 客户端与我编写的 WCF 服务进行通信。 收到消息时出现如下异常: Cannot find a token authenticator for the 'System.I
在尝试将数据插入到我的 SQl 数据库时,我收到以下错误 System.Data.SqlServerCe.SqlCeException: There was an error parsing the
使用数据库 session token 系统,我可以让用户使用用户名/密码登录,服务器可以生成 token (例如 uuid)并将其存储在数据库中并将该 token 返回给客户端。其上的每个请求都将包
我最近注册了 Microsoft Azure 并设置了认知服务帐户。使用 Text Translation API Documentation 中的说明我能够使用 interactive online
我使用 IAntiforgery API 创建了一个 ASP.Net Core 2 应用程序。 这提供了一种返回 cookie 的方法。 客户端获取该 cookie,并在后续 POST 请求中将该值放
我正在使用 spacy 来匹配某些文本(意大利语)中的特定表达式。我的文本可以多种形式出现,我正在尝试学习编写一般规则的最佳方式。我有如下 4 个案例,我想写一个适用于所有案例的通用模式。像这样的东西
我无法理解 oauth 2.0 token 的原则处理。 我的场景是,我有一个基于 web 的前端后端系统,带有 node.js 和 angular 2。用户应该能够在此站点上上传视频。然后创建一些额
我是一名优秀的程序员,十分优秀!