如何使用谷歌&x27;使用CORS的OpenID连接提供程序?

如何使用谷歌&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

我已经编写了一个JavaScript应用程序,使用Google的OpenID连接提供程序进行身份验证。我已经在谷歌的开发者控制台上注册了这个应用程序

我正在使用该库处理与Google的交互,并将我的应用程序的
客户端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。你能再试一次吗?

我刚再试了一次,效果很好。谢谢你的回答!我又试了一次,结果成功了。谢谢你的回答!