【发布时间】:2015-09-11 09:50:19
【问题描述】:
我正在尝试让我的节点网页针对我们的内部 mediawiki 系统进行身份验证,并且没有使用节点 passport-mediawiki-oauth。
认为一切设置正确,我被转发到 mediawiki 登录页面,提供登录详细信息,然后从 mediawiki 获得“未知 URL,E003”(在屏幕上,而不是返回码)。我的问题是,我无法弄清楚是什么导致了这个问题。
我已尝试设置 callbackURL (http://127.0.0.1:30005/auth/mediawiki/callback),我已尝试将其留空以使用默认设置的那个(与上面在 mediawiki 上的 Oauth 提案中提供的相同)。
我会进一步调查,但我已经进行了 mediawiki 调试,没有任何信息。我试图找到关于问题 E003 的信息,没有信息。如果我至少可以弄清楚它试图使用哪个 URL 来提供反馈,看看这是否是问题所在,但我完全被卡住了。
passport-mediawiki-oauth 的配置为(已删除敏感信息):
consumerKey: "xxxxxxxxxxxxxxxxxxxxxxxx",
consumerSecret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
callbackURL: "http://127.0.0.1:30005/auth/mediawiki/callback",
requestTokenURL: 'http://192.168.0.51:8081/dbfswiki/index.php?title=Special:OAuth/initiate',
accessTokenURL: 'http://192.168.0.51:8081/dbfswiki/index.php?title=Special%3AOAuth%2Ftoken',
userAuthorizationURL: 'http://192.168.0.51:8081/dbfswiki//wiki/Special:OAuth/authorize',
baseURL: "http://192.168.0.51:8081/dbfswiki/index.php/Special:OAuth/authorize"
身份验证代码由此处理:
passport.use('mediawiki', new MediaWikiStrategy({
consumerKey: configAuth.mediawikiAuth.consumerKey,
consumerSecret: configAuth.mediawikiAuth.consumerSecret ,
callbackURL: configAuth.mediawikiAuth.callbackURL,
baseURL: configAuth.mediawikiAuth.baseURL
},
function(token, tokenSecret, profile, done) {
User.findOrCreate({ mediawikiGlobalId: profile.id }, function (err, user) {
return done(err, user);
});
}
));
【问题讨论】:
-
The OAuth MediaWiki extension 要求您提前指定回调 URL,或者至少指定其前缀(如域名),作为安全措施。所以你需要在 MediaWiki 中注册一个新的消费者,在那里设置回调 URL,然后确保你的节点模块要么发送匹配的回调 URL,要么什么都不发送。如果您对如何使错误消息更有用有任何建议,请随时file a bug。
标签: oauth mediawiki mediawiki-api