2017-09-07 237 views
1

所以我在使我的Keycloak-Connect示例正常工作時遇到了一些問題。Keycloak - 授權驗證失敗。原因:無效標記(錯誤的ISS)

基本上我有Keycloak明確路線上一個簡單的檢查我的VM

(10.10.10.54:8081)如下。

app.get('/api*', keycloak.protect(), (req, res) => res.status(200).send({ 
    message: 'Hit API Backend!', 
})); 

我Keycloak服務器是一個單獨的虛擬機(在這個例子中http://keycloak.myexternaldomain.ca/auth/

我一直在做測試了這一點的調用是。

RESULT=`curl --data "grant_type=password&client_secret=mysecret&client_id=account&username=myusername&password=mypassword" http://keycloak.myexternaldomain.ca/auth/realms/TEST/protocol/openid-connect/token` 

這將返回適當的訪問令牌每次,

TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'` 

爲了解析令牌到變量中。

curl http://10.10.10.54:8081/api -H "Authorization: bearer $TOKEN" 

仍然不斷地返回訪問被拒絕,我與Keycloak-Quickstart Node Service一個類似的例子試過這個,看看是否該有一個更詳細的錯誤。我今天準備接收返回的是

Validate grant failed 
Grant validation failed. Reason: invalid token (wrong ISS) 

但如果我等了一點點它會再給我一個過期的標記錯誤,所以我覺得我在正確的軌道上。

所以很明顯,我從哪裏發出的令牌不匹配它所期望的地方有什麼問題?我可以撥打電話通過捲曲到

curl --data "grant_type=password&token=$TOKEN&client_secret=secret&client_id=account&username=myaccount&password=mypassword" http://keycloak.myexternaldomain.ca/auth/realms/TEST/protocol/openid-connect/token/introspect 

我會誤解我應該如何使用Keycloak,或者這是一個設置問題,以尋求從keycloak服務器本身的用戶憑據?

在此先感謝

回答

1

我的問題是在我的keycloak.json ......我有一個不同的境界VS一個我一直在爲身份驗證。

如果您遇到過這個問題,我建議您修改keycloak-auth-utils,讓您在grant-manager上記錄更詳細的錯誤。

具體改變

else if (token.content.iss !== this.realmUrl) { 
     reject(new Error('invalid token (wrong ISS)')); 
} 

else if (token.content.iss !== this.realmUrl) { 
     reject(new Error('invalid token (wrong ISS) Expecting: '+this.realmUrl+' Got: '+token.content.iss); 
} 

幫我追查這個問題我自己。

+1

我在這裏創建了拉取請求:https://github.com/keycloak/keycloak-nodejs-auth-utils/pull/80 – cdupont

相關問題