OAuth2访问源错误
OAuth2 Access origin error
I向OAuth2
服务器请求authorization code
。我的目的是授权用户使用我的微软应用程序。参考文献
My attempt for get Call:
function httpGet(){
var theUrl = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id="client_id"&response_type=code&redirect_uri="redirect_uri"&response_mode=query&resource=https%3A%2F%2Fservice.contoso.com%2F&state=12345";
var req = new XMLHttpRequest();
req.open('GET', theUrl, true);
req.onreadystatechange = function() {
if (req.readyState === 4) {
if (req.status >= 200 && req.status < 400) {
console.log(req.responseText)
} else {
console.log("error")
}
}
};
req.send();
}
,但这会产生以下错误:
请求的文件中没有'Access-Control-Allow-Origin'标头资源。
然后加上req.setRequestHeader("Access-Control-Allow-Origin", "*");
,但它给出以下错误:
对预飞行请求的响应未通过访问控制检查:No"访问-控制-允许-起源"标头出现在请求上资源。
要在javascript中集成AAD,我们建议您使用azure-activedirectory-library-for-js,这是一个用于前端的javascript库,可以轻松集成AAD。
在为JS使用ADAL之前,我们需要注意两个选项:- 根据https://github.com/OfficeDev/O365-jQuery-CORS#step-6--run-the-sample:节点
注意:这个示例不能在Internet Explorer中工作。请使用其他浏览器,例如Google Chrome。js使用iframe来获取资源的CORS API令牌,而不是SPA自己的后端。这些iframe请求需要访问浏览器的cookie才能通过Azure Active Directory进行身份验证。不幸的是,当应用程序在本地主机上运行时,Internet Explorer无法访问cookie。
- 启用Azure AD应用程序的
oauth2AllowImplicitFlow
。详细步骤请参阅https://crmdynamicsblog.wordpress.com/2016/03/17/response-type-token-is-not-enabled-for-the-application-2/。
下面是从Microsoft Graph获取访问令牌的代码示例:
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.10/js/adal.min.js"></script>
<body>
<a href="#" onclick="login();">login</a>
<a href="#" onclick="getToken()">access token</a>
</body>
<script type="text/javascript">
var configOptions = {
tenant: "<tenant_id>", // Optional by default, it sends common
clientId: "<client_id>",
postLogoutRedirectUri: window.location.origin,
}
window.authContext = new AuthenticationContext(configOptions);
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
function getToken(){
authContext.acquireToken("https://graph.microsoft.com",function(error, token){
console.log(error);
console.log(token);
})
}
function login(){
authContext.login();
}
</script>
不使用任何frontend
谷歌库,我想出了解决方案。
window.open("url")
完成身份验证后,我从url params
获得code
并将其发送backend
并实现access token, refersh token.......etc,
- 难以访问的JS环境中的语法错误
- Phonegap:获取访问令牌时出现LinkedIn登录错误
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- Jquery 脚本错误“访问被拒绝”
- D3 Json请求获取XmlHttpRequest错误:访问控制允许原点不允许原点为null
- 错误:访问属性“”的权限被拒绝;文件”;
- 未定义的错误访问安卓相机
- 使用AngularJS加载动态指令-错误:访问受限URI被拒绝
- 推特:仅应用程序身份验证错误访问控制允许原点不允许原点为null
- 错误:访问子域属性的权限被拒绝
- Ajax错误“;错误:访问被拒绝"在IE11中.窗XDomainRequest对象不可用
- 错误.访问iFrame中的PDF元素
- http 403错误(访问被拒绝)的CSS文件localhost
- Meteor: Facebook基本API调用错误:访问令牌
- 错误访问变量形式函数
- 错误:访问属性'的权限被拒绝;处理程序'
- SVG错误:访问属性'someFunction'权限被拒绝
- 错误:访问受限的URI被拒绝-同源策略
- AngularJs:发送到远程服务器的表单给出错误:访问受限URI被拒绝
- 错误---访问控制允许原点不允许原点空