2016-02-20 39 views
3

是否有類似的東西:獲得來自keycloak會話的用戶名中的NodeJS

request.getUserPrincipal().getName()  // Java 

在節點獲取用戶名時,我們使用連接-keycloak與快遞中間件?

+0

我不是一個Java開發者,但你問是否有一種方法可以從您的中間件的值傳遞給下一個函數/類被調用你的路線? –

+0

+1我們還需要從JWT令牌獲取用戶信息。就在此刻,我們再次分析這個持票人......不是很好。也許我們應該提出問題 - 如果他們會激活github上的窗格;) – orschaef

回答

3

我也來過這個問題。

我的確潛入了中間件代碼並試圖找到類似的東西。事實證明request對象被修改並附加kauth.grant

console.log('req.kauth.grant')打印出:

{ 
access_token: { 
    token: 'kasdgfksj333', 
    clientId: 'mobile', 
    header: { 
     alg: 'RS256' 
    }, 
    content: { 
     jti: '33389eb6-3611-4de2-b913-add9283c3de0', 
     exp: 1464883174, 
     nbf: 0, 
     iat: 1464882874, 
     iss: 'http://docker:9090/auth/realms/test', 
     aud: 'test-client', 
     sub: '333604a0-b527-4afb-a04e-5e4ebf06ce9c', 
     typ: 'Bearer', 
     azp: 'test-client', 
     session_state: '1cd35952-8e42-44f1-ad15-aaf9964bfefa', 
     client_session: '943f1213-f556-4021-bbc6-2355146ab955', 
     'allowed-origins': [], 
     resource_access: [Object], 
     name: 'Test User', 
     preferred_username: 'user', 
     given_name: 'Test', 
     family_name: 'User', 
     email: '[email protected]' 
    }, 
    signature: < Buffer 45 1 b 3 d d7 4 f f9 d1 63 44 ad a9 ca b8 c4 67 88 ba e9 5 d 64 8 d a0 a9 75 a1 79 cf 18 52 d5 f7 f0 08 71 1 d 79 bd 59 e9 5 a f8 25 72 dd e5 06 71 4 f b7 f1 47... > , 
    signed: 'eyJhbGcfOiJSUzf1NiJ9.eyJqdGkiOsJmYmY4OWViwi0zNjExLTrkZTItYjkxMy1hZGQ5MjgzYzNkZTAiLCJleHAiOjE0NjQ4ODMxNzQsIm5iZiI6MCwiaWF0IjoxNDY0ODgyODc0LCJpc3MiOiJodHRwOi8vZG9ja2VyaG9zdDo5MDgwL2F1dGgvcmVhbG1zL3JoY2FycyIsImF1ZCI6InJoY2Fycy12ZWhpY2xlLW93bmVyLWlvcyIsInN1YiI6IjkxMjYwNGEwLWI1MjctNGFmYi1hMDRlLTVlNGViZjA2Y2U5YyIsInR5cCI6IkJlYXJlciIsImF6cCI6InJoY2Fycy12ZWhpY2xlLW93bmVyLWlvcyIsInNlc3Npb25fc3RhdGUiOiIxY2QzNTk1Mi04ZTQyLTQ0ZjEtYWQxNS1hYWY5OTY0YmZlZmEiLCJjbGllbnRfc2Vzc2lvbiI6Ijk0M2YxMjEzLWY1NTYtNDAyMS1iYmM2LTIzNTUxNDZhYjk1NSIsImFsbG93ZWQtb3JpZ2lucyI6W10sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50Iiwidmlldy1wcm9maWxlIl19fSwibmFtZSI6IlRlc3QgVXNlciIsInByZWZlcnJlZF91c2VybmFtZSI6IjEyMzEyMyIsImdpdmVuX25hbWUiOiJUZXN0IiwiZmFtaWx5X25hbWUiOiJVc2VyIiwiZW1haWwiOiJmb29iYXJ1c2VyQGFyY29uc2lzLmNvbSJ9' 
}, 
refresh_token: undefined, 
id_token: undefined, 
token_type: undefined, 
expires_in: undefined, 
__raw: '{"access_token":"eyJhbGciOiJSUzI3NiJ2.eyJqdGki4iJmYmY4OWriNi0zNjExLTRkZTItYjkxMy1hZGQ5MjgzYzNkZTAiLCJleHAiOjE0NjQ4ODMxNzQsIm5iZiI6MCwiaWF0IjoxNDY0ODgyODc0LCJpc3MiOiJodHRwOi8vZG9ja2VyaG9zdDo5MDgwL2F1dGgvcmVhbG1zL3JoY2FycyIsImF1ZCI6InJoY2Fycy12ZWhpY2xlLW93bmVyLWlvcyIsInN1YiI6IjkxMjYwNGEwLWI1MjctNGFmYi1hMDRlLTVlNGViZjA2Y2U5YyIsInR5cCI6IkJlYXJlciIsImF6cCI6InJoY2Fycy12ZWhpY2xlLW93bmVyLWlvcyIsInNlc3Npb25fc3RhdGUiOiIxY2QzNTk1Mi04ZTQyLTQ0ZjEtYWQxNS1hYWY5OTY0YmZlZmEiLCJjbGllbnRfc2Vzc2lvbiI6Ijk0M2YxMjEzLWY1NTYtNDAyMS1iYmM2LTIzNTUxNDZhYjk1NSIsImFsbG93ZWQtb3JpZ2lucyI6W10sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50Iiwidmlldy1wcm9maWxlIl19fSwibmFtZSI6IlRlc3QgVXNlciIsInByZWZlcnJlZF91c2VybmFtZSI6IjEyMzEyMyIsImdpdmVuX25hbWUiOiJUZXN0IiwiZmFtaWx5X25hbWUiOiJVc2VyIiwiZW1haWwiOiJmb29iYXJ1c2VyQGFyY29uc2lzLmNvbSJ9.RRs910_50WNEranKuMRniLrpXWSNoKl1oXnPGFLV9_AIcR15vVnpWvglct3lBnFPt_FH6QPJTmp7i-8mRTIDoIL8jtmEtJ8VfE2ZYX5WN3RlxPFQc5kCOZUQiV55eZALOCSTpm2HIw1eLhBVs4Is8RMJoWy8xj3k4pkOqqll8NY__TJdTG7Iihj0lReblyaW34OpSxkAYoqYaayox0H_7UbnpSAIL0BqBL41lDPH4mXouUX3i0fFbLOt_MnAtPrdFYTez7OVmKhZx7gavdQEkHEGK8thgagnCrycejUqTO0YUeOsasQ2NK9KLPBIEA0eX_p2l2yDYhlJR15stQ3AHA"}', 
store: [Function], 
unstore: [Function] 
} 

肯定的 - 這是不是開發商友好的,但你可以通過 req.kauth.grant.access_token.content.preferred_username訪問的用戶名。這導致user

我會將此作爲問題報告給主要貢獻者。 (GitHub庫keycloak中間件https://github.com/keycloak/keycloak-nodejs-connect的)

UPDATE 的keycloak項目的主要貢獻者只是回答我。如果你發現任何其他問題 - 在這裏解決這些問題: https://issues.jboss.org/projects/KEYCLOAK

對於Node.js的適配器: https://issues.jboss.org/browse/KEYCLOAK-2833?jql=project%20%3D%20KEYCLOAK%20AND%20component%20%3D%20%22Adapter%20-%20Node.js%22

希望我能幫上忙。

乾杯
奧蘭多

+0

謝謝,這沒有記錄。 – Machiel