如何动态发现端点

时间:2017-05-29 07:10:49

标签: oauth openid openid-connect

我想在我的项目中实现openid connect。现在我很难为google创建发现网址 - https://accounts.google.com/.well-known/openid-configuration,对其他来源也是如此,然后进行此调用并获取所有相应来源的端点。 但我想让它充满活力。我在openid.net上找到了一些东西

GET /.well-known/webfinger
    ?resource=acct%3Ajoe%40example.com
    &rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer
    HTTP/1.1
  Host: example.com

  HTTP/1.1 200 OK
  Content-Type: application/jrd+json

  {
   "subject": "acct:joe@example.com",
   "links":
    [
     {
      "rel": "http://openid.net/specs/connect/1.0/issuer",
      "href": "https://server.example.com"
     }
    ]
  }

我该怎么做这个电话。我应该把什么放在resouces,rel ??我是oauth过程的初学者。你能不能帮助我。

2 个答案:

答案 0 :(得分:1)

很少有主要的IdP支持动态注册。他们似乎都希望您在网页上注册,您可以同意他们的使用条款。

mojeid.cz是我所知道的。如果你找到我想知道的其他人。

我正在编写动态客户端。这很难。我计划在某个时候将它发布在GitHub上。 ..tom

答案 1 :(得分:0)

严格来说,动态注册不一定与Discovery一对一地结合,尽管通常情况下也是如此。

正如OP建议的那样,可以通过应用Webfinger Discovery来查找提供者的元数据,如下所述:http://openid.net/specs/openid-connect-discovery-1_0.html#IssuerDiscovery

请求和响应看起来已经在问题中显示,即:http://openid.net/specs/openid-connect-discovery-1_0.html#URLSyntax RP可以解析" hreft"来自响应的价值会给出发行人" value(即提供者的唯一DNS绑定标识符),然后构建众所周知的端点,其中可以从此处所述检索提供者的配置元数据:http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig

假设RP在先前的越界步骤中已经与该Provider建立了client_id / client_secret,这可以避免RP必须存储和/或缓存提供者&# 39; s元数据。