作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我到目前为止所拥有的。注释掉的部分是来自微软网站的C#代码,我一直在尝试转换。
import CryptoKit
func GenerateSasToken(resourceUri: String, key: String, policyName: String = "", expiryInSeconds: Int = 3600) -> String?
{
// TimeSpan sinceEpoch = DateTime.UtcNow - new DateTime(1970, 1, 1);
let fromEpochStart = Date().timeIntervalSince1970
let expiry = Int(fromEpochStart) + expiryInSeconds
// string stringToSign = HttpUtility.UrlEncode(resourceUri) + "\n" + expiry;
guard let encodedResourceUri = resourceUri.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else { return nil }
let stringToSign = "\(encodedResourceUri)\n\(expiry)"
// HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(key));
guard let base64Key = key.data(using: .utf8) else { return nil }
let symmetricKey = SymmetricKey(data: base64Key)
let hmac = HMAC<SHA256>.init(key: symmetricKey)
// var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(stringToSign)));
// var sasToken = String.Format(CultureInfo.InvariantCulture, "SharedAccessSignature sr={0}&sig={1}&se={2}&skn={3}", HttpUtility.UrlEncode(resourceUri), HttpUtility.UrlEncode(signature), expiry, keyName);
// return sasToken;
return ""
}
https://learn.microsoft.com/en-us/rest/api/eventhub/generate-sas-token
我正在慢慢地通过 C# 代码进行转换,只是想知道是否有人已经将其转换为 swift。
最佳答案
在客户端生成 sas token 是个坏主意,因为您需要使用存储 key 进行编译,然后攻击者反编译您的应用程序并获取 key ,这将使他们能够访问您的存储/事件中心等。这实际上是 SAS token 背后的想法,因此客户端应用程序请求短暂且有限的 token 来执行通常只是一个操作。
关于c# - 如何在 Swift 中创建 SaS token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67552527/
我是一名优秀的程序员,十分优秀!