【发布时间】:2021-05-05 01:23:35
【问题描述】:
我将Moya 用于iOS 网络。
我们的服务器(在虚拟机上)使用 OAuth,并且需要使用访问令牌发出请求。
我正在尝试使用POST /oauth/token 将初始访问令牌检索到我们的端点。
我得到的是:
此服务器的证书无效。您可能正在连接到伪装成“xxxxxx”的服务器,这可能会使您的机密信息面临风险。”您仍然要连接到服务器吗?
VM 不验证证书。
这可能是问题吗?
如果是这样,应该如何配置 Moya 以忽略证书验证?
如果没有,关于如何使用 Moya 来实现此目的的任何想法?
下面是Moya配置:
enum MyApi {
case auth
}
extension MyApi: TargetType {
var baseURL: URL {
return URL(string: "https://server.nb/api/oauth/token")!
}
var path: String {
return ""
}
var method: Moya.Method {
return .post
}
var sampleData: Data {
return Data()
}
var task: Task {
let params = [
"client_id": "xxxxxxx",
"client_secret": "xxxxxxxx",
"grant_type": "password",
"password": "xxxxxxxx",
"username": "niv@bp.com"
]
return .requestParameters(parameters: params, encoding: URLEncoding.default)
}
var headers: [String : String]? {
let headers = [
"Content-Type": " application/x-www-form-urlencoded",
]
return headers
}
}
编辑:
这是 info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>https://server.nb</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
</dict>
这是 Moya 提供者服务:
struct MoyaNetworkService {
private let moyaProvider: MoyaProvider<MyApi>!
init(moyaProvider: MoyaProvider<MyApi> = MoyaProvider<MyApi>()) {
self.moyaProvider = moyaProvider
}
func auth() {
moyaProvider.request(.auth) { (result) in
}
}
}
【问题讨论】:
-
也许您需要使用 http 而不是 https?如果您没有使用证书。我也认为你需要像这样指定域 - server.nb 也是。也许这可以帮助stackoverflow.com/questions/23241872/…
标签: ios swift ssl access-token moya