Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

[解惑] 关于野狗安全域名和超级密钥

$
0
0

关于野狗的安全域名

野狗的安全域名是为了控制域名对数据读取的影响,举个例子,如果我们不设置安全域名的情况下,我们的网站对我们有什么影响? 假设我是一个非常牛逼的人,那么我可以随随便便把一个网站的UI界面扒下来并且部署到自己的服务器上面,让你分不清是李逵还是李鬼。之后,我只需要把源网站的数据接口通过 console控制台进行一系列的分析把数据拷贝过来就OK了!或者说我可以在把UI拷贝过来的时候就可以把数据拷贝过来了!之后呢?我们就可以做一些坏坏的事情,你可以用李鬼的网站登录,当然你的网站为了吸引用户注册两肯定开了第三方登录,之后我就可以在李鬼网站的后台等待着你登录进来,进而获取你的微信ID,电话号码,等等信息,之后我就可以做更坏的事情,这就不用我说了吧!

那么, 怎样可以控制某个网站可以访问某个数据接口呢?野狗这边就做了一个叫做安全域名的东西,你把它放在数据接口的后台,你把一个域名例如: www.wilddog.com填写到 野狗控制台 ,之后野狗就默认之只有 www.wilddog.com这个域名访问野狗的数据接口的时候才能给数据!其他的域名访问野狗的数据接口则访问不了,这样来达到保证数据安全的问题。

关于野狗的超级密钥

每一个野狗App可以生成10个超级密钥,其中第一个超级密钥可以用于身份验证,这句话什么意思?

野狗在身份认证(Auth)部分,有一个方法叫做 authWithCustomToken()这个 CustomToken是利用 Wilddog ID Token生成器 + 超级密钥生成的,或者你可以直接使用野狗提供的 超级密钥就可以了!

“其中只有第一个密钥可用于身份验证” 这句话的意思是说:在开发者已有用户认证体系,并且想和野狗服务器集成的时候,你只能用第一个超级密钥生成JWT(Json Web Token)。我们可以结合 Wilddog ID Token生成器代码来说一下:

Map<String, Object> authPayload = new HashMap<String, Object>();
authPayload.put("uid", "1");

TokenOptions tokenOptions = new TokenOptions();
tokenOptions.setAdmin(true);

TokenGenerator tokenGenerator = new TokenGenerator("<YOUR_WILDDOG_SECRET>"); //YOUR_WILDDOG_SECRET 必须是超级密钥列表的第一密钥,否则认证不通过!
String token = tokenGenerator.createToken(authPayload, tokenOptions);

在生成了一个JWT的密钥之后,我们就可以按照 野狗和现有的认证系统集成的方法进行集成就可以了。其他的9个密钥我们就可以忽略了!


Viewing all articles
Browse latest Browse all 14821

Trending Articles