我正在设置onelogin,我来到了这个步骤,我必须用第一个GET请求(https://developers.onelogin.com/openid-connect/api/authorization-code-grant)中的给定代码再发送一个POST请求。
他们说我必须发送POST请求到这个URL https://.onelogin.com/oidc/token,而我发送的请求是Angular 7。
const headers = new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': `Basic <base64 encoded ${environment.clientId}:${environment.clientSecret}`
});
const options = {
headers: headers
};
const body = {
grant_type: 'authorization_code',
code: code,
redirect_url: this.getCallbackURL(),
client_id: environment.clientId,
client_secret: environment.clientSecret
};
return this.httpClient.post('https://openid-connect-eu.onelogin.com/oidc/token', body, options).toPromise();但是我得到了这个错误:
CORS策略阻止了从源'https://my-site-name.com‘在'https://openid-connect-eu.onelogin.com/oidc/token’对XMLHttpRequest的访问:对印前检查请求的响应未通过访问控制检查:请求的资源上不存在' Access - control -Allow- origin‘标头。
注意:替换为openid-connect-eu,因为我在文档中描述的欧盟。
发布于 2019-05-24 02:33:04
Javascript禁止在浏览器级别对其他域进行POST调用,除非它们被服务明确允许(出于安全原因,OneLogin不允许这样做)
我要补充的是,通过Javascript执行此身份验证流是不安全的,因为任何人都可以从您的代码中截获clientID和Secret。
对于javascript应用程序,我建议使用隐式OIDC流,文档如下:
https://developers.onelogin.com/openid-connect/api/id-token
OneLogin也有这样的示例代码:
https://github.com/onelogin/onelogin-oidc-node/tree/master/2.%20Implicit%20Flow
https://stackoverflow.com/questions/56254354
复制相似问题