リソースベースのアクセス権システム-API設計

1939 ワード

概要


権限システムは他のシステムと統合する必要があるため,良好なAPIは使いやすさの保証である.
ここでは権限関連のコアAPIのみを設計し,ユーザ,組織,インポートエクスポートなどの後続を逐次補完する.

API設計


権限をめぐるAPIには、次の4種類があります.

権限

  • ユーザー/組織に権限を付与します.権限=リソース+アクション
    UpdatePermission(userID, resourceID, action) error    //     userID     resouceID     action
    UpdatePermission(orgID, resouceID, action) error      //     orgID     resouceID     action

  • バッチは、複数のユーザー/組織に権限を付与します.
    UpdatePermissions(userIDList, resourceIDList, actionList) error
    UpdatePermissions(orgIDList, resouceIDList, actionList) error


  • アクセス権の確認


    ユーザー/組織に権限があるかどうかを確認します.
    CheckPermission(userID, resourceID, action) bool    //    userID       resouceID     action
    CheckPermission(orgID, resouceID, action) bool      //    orgID       resouceID     action

    クエリー権限


    Permissionがパーミッション・データの構造であるユーザー/組織のパーミッション・データを問合せます.
    GetPermissions(userID) ([]Permission, error)   //    userID        
    GetPermissions(orgID) ([]Permission, error)    //    orgID        

    権限の削除


    ユーザー/組織の権限データの削除
    DeletePermission(userID, resourceID, action)    //    userID   resouceID     action    
    DeletePermission(orgID, resouceID, action)      //    orgID   resouceID     action    

    まとめ


    全体の権限システムは以上のいくつかのAPIだけでは足りないに違いないが、他のAPIは通常のユーザー/組織、リソース、動作などのCURDであり、ここでは一つ一つリストしない.