CloudFoundry User Account and Authentication (UAA) Server Access Token

  1. UaaTokenService裏面詳細記錄了clientdetails 和 users + userinfo是怎麼映射到token中去的
    userinfo表結構的info結構參見UserInfo類,roles和user_attributes;看UserInfoRowMapper;

  2. 從UaaUserRowMapper中,可以看到,user的authorities的來源;groups + 當前zone給用戶配置的默認的group(uaa.yml中的oauth.user.authorities字段的配置的值)

2.access token上scope字段的來源
從UaaAuthorizationRequestManager中可以看出,如果是client_dcredentials的話,{
user的scope這個說法,就是user的authority,注意不是user表的authorities字段存儲的值,而是group模塊存儲的權限 + zone default groups的並集;users表的authorities的值貌似沒啥用?

token的scope字段是client的scope和user的scope的交集;

client scope的取值邏輯爲
當爲client_credentials類型時,client scope來源爲client的authorities字段;如果是其他類型的話,client scope的來源爲爲client表中scope字段的值;
如果用戶輸入了scopes,則client的scopes值爲用戶輸入的scopes值剔除不在client scope來源中的scope,;如果用戶沒有傳遞scopes,
當爲client_credentials類型時,client scope的值爲client的authorities字段的值;如果是其他類型的話,token的scope的值爲client表中scope字段的值;

user scope的取值邏輯爲
當爲client_credentials類型時,此時沒有用戶參與,也就沒有user scope;如果是其他類型的,user scope 爲group模塊存儲的權限 + zone default groups的並集;

取交集client scope和user scope的交集;
}

  1. grant_type:用戶傳輸的

  2. 如果是一個user token的話,會有這四個值,client token 則沒有{
    user_id=users#id,
    user_name=users#username,
    email=users@email
    origin=user 的origin,user的zone_id,僅僅針對user token
    }

  3. {

    1. exp:當前時間+有效期,有效期在client的access_token_validity,如果client上沒有配置,則取zone的config字段上配置,如果zone上也沒有配置,則使用global token validity seconds這個全局配置;
    2. jti=uuid請求時生成,無需參數
    3. iat=now,timeService.getCurrentTimeMillis();
    4. sub= Subject Claim,放的是client的數據庫記錄id或者user的數據庫記錄id,如果是一個client token,則值爲client id,如果是一個user token ,值爲 user id;
    5. client_id/cid=oauth_client_details#id,放的就是clientId;azp=Authorized party,放的就是clientId;
    6. authorities:只有grantype爲client credential時,纔會有這個值,值爲client scope;
    7. auth_time:發放token的時間
    8. iss:token endpoint,發放token的url地址
    9. zid=zone_id
      }
  4. {
    aud:tokenrequest#resourceids的值最後傳到了這裏
    }

  5. rev_sig

  6. revocable,jwt時=false,其他時是true?這個單獨研究,jwt也是可已revoke的,注意注意!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章