如何使用谷歌&x27;使用CORS的OpenID连接提供程序?
我已经编写了一个JavaScript应用程序,使用Google的OpenID连接提供程序进行身份验证。我已经在谷歌的开发者控制台上注册了这个应用程序 我正在使用该库处理与Google的交互,并将我的应用程序的如何使用谷歌&x27;使用CORS的OpenID连接提供程序?,cors,google-signin,google-authentication,openid-connect,google-openid,Cors,Google Signin,Google Authentication,Openid Connect,Google Openid,我已经编写了一个JavaScript应用程序,使用Google的OpenID连接提供程序进行身份验证。我已经在谷歌的开发者控制台上注册了这个应用程序 我正在使用该库处理与Google的交互,并将我的应用程序的客户端id传递给配置,以便将其传递给Google以验证我的应用程序 我的配置: { client_id: 'secret', redirect_uri: `${window.location.protocol}//${window.location.hostname}:${windo
客户端id
传递给配置,以便将其传递给Google以验证我的应用程序
我的配置:
{
client_id: 'secret',
redirect_uri: `${window.location.protocol}//${window.location.hostname}:${window.location.port}/callback`,
response_type: 'token id_token',
scope: 'openid profile',
authority: 'https://accounts.google.com/',
silent_redirect_uri: `${window.location.protocol}//${window.location.hostname}:${window.location.port}/silent_renew.html`,
automaticSilentRenew: true,
filterProtocolClaims: true,
loadUserInfo: true
};
我的开发服务器在https://localhost:8080
(带有自签名的开发人员证书)。我已经在谷歌注册了这个URL和重定向URI,作为我应用程序的授权主机,所以谷歌知道我的开发服务器。当我尝试访问Google的OpenID提供程序时,出现以下错误:
无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”
编辑:我已经将问题缩小到谷歌的端点,在其响应中没有设置任何CORS头。如果我禁用Chrome的CORS安全设置,身份验证就会起作用。这无论如何都不可取,但也意味着CORS才是真正的罪魁祸首
我有没有办法在谷歌的OpenID发现文档中使用CORS?我必须在谷歌为我的服务器注册CORS源吗?谷歌的OpenID发现文档似乎没有CORS支持,因此没有JavaScript应用程序可以访问它(这应该在谷歌方面得到修复) 为了使其与oidc客户端js配合使用,您必须按照中的说明手动设置从发现文档中获取的信息 编辑(2016年7月20日):
感谢孟成的回答。谷歌的发现文档现在已经得到了全面的CORS支持。手动设置发现文档中的信息的步骤已不再必要。谷歌的OpenID发现文档似乎没有CORS支持,因此没有JavaScript应用程序可以访问它(谷歌方面可能会对此进行修复) 为了使其与oidc客户端js配合使用,您必须按照中的说明手动设置从发现文档中获取的信息 编辑(2016年7月20日):
感谢孟成的回答。谷歌的发现文档现在已经得到了全面的CORS支持。不再需要手动设置发现文档中的信息。谷歌已更新OpenID Connect发现文档以支持CORS。你能再试一次吗?谷歌已经更新了OpenID连接发现文档以支持CORS。你能再试一次吗?我刚再试了一次,效果很好。谢谢你的回答!我又试了一次,结果成功了。谢谢你的回答!