首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NEVPNManager如何设置SharedSecretReference

使用NEVPNManager如何设置SharedSecretReference
EN

Stack Overflow用户
提问于 2017-10-26 02:18:02
回答 1查看 524关注 0票数 0

因此,我试图使用NEVPNManager设置我的虚拟专用网编程。我被困在配置上了,真的搞不懂到底是怎么回事。

sharedSecretReference真的把我绊倒了。我在其他地方见过一些东西,上面说我需要使用钥匙链,但是我要怎么用,为什么要用。我可以连接到这个VPN与大约6个选项使用它手动,所以为什么我需要这么多在这里。

如果你看到我可能做错了什么,请告诉我。这是我目前使用的确切代码

代码语言:javascript
复制
    NEVPNProtocolIPSec *p = [[NEVPNProtocolIPSec alloc] init];
    p.username = [config objectForKey: @"username"];
    p.passwordReference = [config objectForKey: @"password"];
    p.serverAddress = [config objectForKey: @"ip"];
    p.localIdentifier = [config objectForKey: @"vpn"];
    p.remoteIdentifier = [config objectForKey: @"vpn"];
    p.useExtendedAuthentication = NO;
    p.authenticationMethod = NEVPNIKEAuthenticationMethodSharedSecret;   
    p.disconnectOnSleep = NO;

    p.sharedSecretReference = [config objectForKey: @"psk"];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-28 22:04:43

需要理解的是,您为NEVPNManager提供了一个可以用来启动VPN连接的配置,即使您的应用程序处于非活动状态(通过设置应用程序)。VPN管理器需要能够从密钥链中获取安全数据(共享秘密或密码),而无需通过应用程序。为此,它使用对密钥链中的秘密的持久引用,而不是秘密本身。如果使用像KeychainAccess这样的库,很容易获得这个引用并设置它:

代码语言:javascript
复制
let keychain = Keychain()
let persistentRefSharedSecret = keychain[attributes: "my_shared_secret"].persistentRef
let persistentRefPassword = keychain[attributes: "my_password"].persistentRef

...

p.sharedSecretReference = persistentRefSharedSecret
p.passwordReference = persistentRefPassword
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46944843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档