2017-03-29 52 views
0

使用OpenAM OpenID連接代理,我創建了一個名爲Test-Client的OAuth 2.0/OpenID連接客戶端,其範圍爲openid。OpenAM OpenID連接令牌驗證

我的OpenAM實例部署在Tomcat 7上,並且調整了我的/ etc/hosts文件以將localhost顯示爲openam.example.com。

使用默認的憑據,我可以使用來獲取一個ID連接ID令牌如下:

curl -k -u Test-Client:password -d "grant_type=password&username=demo&password=changeit&scope=openid" -H "Content-Type: application/x-www-form-urlencoded" "http://openam.example.com:8080/openam/oauth2/access_token" 

然後我可以取回OpenID的用戶信息,如果我的承載令牌仍然有效用(不返回訪問令牌哪裏通過上面的命令):

curl POST -H "Authorization: Bearer {{access_token}}" -k -v "http://openam.example.com:8080/openam/oauth2/userinfo" 

我的問題:

  • 我怎麼找用於簽署id_token智威湯遜的祕密?

回答

3

我對Open AM沒有任何經驗,但要驗證ID令牌,您需要獲得OpenID Connect提供程序的正確公鑰(如果密鑰由非對稱密碼簽名)。爲了得到它,你應該閱讀它的發現文檔,它應該位於/.well-known/openid-configuration。在返回的JSON文檔中,找到一個jwks_uri值並加載該URL。你將得到另一個JSON文件和服務器的所有公鑰。然後,您需要從ID令牌中找到一個與kid(密鑰ID)值匹配的kid

如果令牌被簽名爲對稱密碼,則沒有標準的分發方式。

欲瞭解更多信息,請參閱:

+0

用於對稱密碼將客戶端機密作爲規範的重點在這裏說:HTTP:/ /openid.net/specs/openid-connect-core-1_0.html#Signing –

+0

很高興知道,感謝Hans的更正。 –