引言
通过遵循这个链接https://hyperledger.github.io/composer/integrating/enabling-rest-authentication.html,我有一个超级分类账env在安全模式下运行。
如果我按照文档中指定的方式进行身份验证(直接从浏览器http://mydomain:3000/auth/github 访问),然后从http://mydomain:3000/explorer访问Rest,并且可以作为不同的参与者授权(即一次发出身份并将它们添加到钱包中,并将其设置为默认值),并且可以根据.acl文件查看资产,则可以正常工作。
问题
但是,当我开始将Rest的从我的web应用程序(而不是直接从浏览器中)集成时,我就开始面临问题。作为我的web应用程序的第一步,我调用http://mydomain:3000/auth/github进行身份验证,然后开始调用其他API(事务/列表等)。但是我总是得到错误401:‘授权需要’
我试过的
将我的web应用程序URL作为超级分类账env变量中的“重定向URL”。在成功的身份验证(调用http://mydomain:3000/auth/github)之后,它成功地重定向到我的webapp主页,但随后访问Rest (从web应用程序)再次引发‘授权所需’错误。
环境变化情况如下:
export COMPOSER_PROVIDERS='{
"github": {
"provider": "github",
"module": "passport-github",
"clientID": "CLIENT_ID",
"clientSecret": "CLIENT_SECRET",
"authPath": "/auth/github",
"callbackURL": "/auth/github/callback",
"successRedirect": "http://localhost:8080/home.html",
"failureRedirect": "/"
}
}'在我的web应用程序(即,向github的oauth注册了我的应用程序)和成功登录到我的web应用程序时,引入了passport-github2机制;调用http://mydomain:3000/auth/github对块链进行身份验证,结果也没有成功。
我有几个问题:
已经尝试了一个星期了却没有答案。任何帮助都将不胜感激。如果有什么不清楚的地方请告诉我。谢谢。
发布于 2017-08-21 08:44:27
我在现有的超级分类账github问题(以下链接)上评论了这个问题&我想分享解决这个问题的解决方案。https://github.com/hyperledger/composer/issues/142
解决方案:用户sstone1提到的
由于REST服务器位于web应用程序的不同端口号上,因此需要为HTTP客户端指定一个附加选项,以便将cookie传递给REST服务器。使用角HTTP客户端,添加
withCredentials标志,例如:
经角:
this.http.get('http://mydomain:3000/api/MyAsset', { withCredentials: true })通过JQuery AJAX:
$.ajax({
url: 'http://mydomain:3000/api/MyAsset',
xhrFields: {
withCredentials: true
},
headers: {
...
}
})https://stackoverflow.com/questions/45757185
复制相似问题