0

我正在尝试使用oic库通过 Google OpenID Connect 进行身份验证,但出现错误

oic.exception.IssuerMismatch: 'https://accounts.google.com' != 'accounts.google.com'

跑步时

from oic.oic.consumer import Consumer
db={}
config={}
c=Consumer(db, config)
print c.provider_config('https://accounts.google.com')

它尝试访问https://accounts.google.com/.well-known/openid-configuration,它说

"issuer": "accounts.google.com",

现在,规范似乎表明这是不正确的:

发行人:必填。使用 https 方案的 URL,没有查询或片段组件

我是否正确解释了这是 Google 的 OpenID 连接配置中的错误的情况?我应该向哪里报告此错误?

(注意:我不是在寻找解决方法,这很容易:我可以跳过提供者配置发现并对发现的信息进行硬编码。但我想支持任意 OpenID Connect 提供者,而不仅仅是谷歌)

4

1 回答 1

1

Google 的 OpenID Connect 实现确实不符合规范的那部分。Google 在规范完成之前已经实施了 OpenID Connect(类似)协议,同时他们的一些 RP 已经依赖于该标识符。修改它对于那些 RP 来说将是一个突破性的变化,而谷歌选择不这样做,至少现在是这样。

一些 OpenID Connect 实现确实为 Google 提供了一个例外,其他一些尝试通过向任何不以它开头的 OP 颁发者标识符添加“https://”前缀来概括这种行为,有些甚至不检查它,因为它们没有' t 实现与 Discovery 相关的功能。选择你最喜欢的。

于 2014-12-10T22:56:45.057 回答