Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»¥ÁªÍøÏµÍ³Ó¦Óð²È«¿ØÖÆ
 
  2213  次浏览      27
 2019-8-5 
 

 

±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn£¬»¥ÁªÍø°²È«Ò»Ö±ÊǸöÖØÒªÎÊÌ⣬Ôõô×öºÃ°²È«ÊÇÒ²ÏàÐÅ´ó¼ÒÔÚ²»¶ÏµÄŬÁ¦ÖУ¬ÎÄÕ¼òµ¥µÄ½éÉÜ£¬Ï£ÍûÈôó¼ÒÓиöеÄÈÏʶ¡£

ÔÚ Web Ó¦Óÿª·¢ÖУ¬°²È«Ò»Ö±ÊǷdz£ÖØÒªµÄÒ»¸ö·½Ãæ¡£ÃæÏò»¥ÁªÍø¹«ÍøµÄ½Ó¿Ú·þÎñ£¬Èç¹û²»¼Ó·À»¤»áµ¼ÖÂÊý¾Ýй¶ºÍÉÌÒµ·çÏÕ¡£Ó¦ÓõݲȫÐÔ°üÀ¨Óû§ÈÏÖ¤£¨Authentication£©ºÍÓû§ÊÚȨ£¨Authorization£©Á½¸ö²¿·Ö¡£Óû§ÈÏÖ¤Ö¸µÄÊÇÑé֤ij¸öÓû§ÊÇ·ñΪϵͳÖеĺϷ¨Ö÷Ì壬Ҳ¾ÍÊÇ˵Óû§ÄÜ·ñ·ÃÎʸÃϵͳ¡£Óû§ÈÏÖ¤Ò»°ãÒªÇóÓû§ÌṩÓû§ÃûºÍÃÜÂ롣ϵͳͨ¹ýУÑéÓû§ÃûºÍÃÜÂëÀ´Íê³ÉÈÏÖ¤¹ý³Ì¡£Óû§ÊÚȨָµÄÊÇÑé֤ij¸öÓû§ÊÇ·ñÓÐȨÏÞÖ´ÐÐij¸ö²Ù×÷¡£¼òµ¥À´Ëµ£¬ÈÏÖ¤ÊÇָϵͳÐèҪȷÈÏÄãÊÇË­£¿¶øÊÚȨÊÇÖ¸ÔÚͨ¹ýÈÏÖ¤Ö®ºó£¬ÄãÄܸÉʲô£¿

ºËÐĸÅÄî

Óû§ÈÏÖ¤¹Ø¼ü¶ÔÏó

Subject£ºÖ÷Ì壬¿ÉÒÔÊÇÓû§£¬Ò²¿ÉÄÜÊdzÌÐò£¬¶¼ÒªÈ¥·ÃÎÊϵͳµÄ×ÊÔ´£¬ÏµÍ³ÐèÒª¶Ôsubject½øÐÐÉí·ÝÈÏÖ¤¡£

Principal£ºÉí·ÝÐÅÏ¢£¬Í¨³£ÊÇΨһµÄ£¬Ò»¸öÖ÷Ì⻹Óжà¸öÉí·ÝÐÅÏ¢£¬µ«¶¼ÓÐÒ»¸öÖ÷Éí·ÝÐÅÏ¢£¨Primary Principal£©¡£

Credential£ºÆ¾Ö¤ÐÅÏ¢£¬¿ÉÒÔÊÇÃÜÂë¡¢Ö¤Êé¡¢Ö¸ÎÆ¡£

Óû§ÊÚȨ¹Ø¼ü¶ÔÏó

who£ºÖ÷Ì⣬¼´ÉÏÎĵÄsubject

what£º×ÊÔ´£¬resource£¬subject±ØÐë¾ß±¸×ÊÔ´µÄ·ÃÎÊȨÏ޲ſɷÃÎÊ×ÊÔ´¡£

how£ºÈ¨ÏÞ/Ðí¿Épermission£¬Õë¶Ô×ÊÔ´µÄȨÏÞ»òÐí¿É£¬subject¾ßÓÐpermission·ÃÎÊ×ÊÔ´£¬ÈçºÎ·ÃÎÊÐèÒª¶¨Òåpermission¡£

³£¼ûµÄʵÏÖ±ê×¼

Http³£ÓÃÈÏÖ¤·½Ê½

Http BasicÈÏÖ¤£ºÓû§ÃûÃÜÂë°´ÕÕ¸ñʽ¡°Óû§Ãû:ÃÜÂ롱ͨ¹ýBase-64±àÂ룬ͨ¹ýAuthorization header´«µÝµ½·þÎñ¶Ë£¬·þÎñ¶Ë½âÂë³ÉΪ¡°Óû§Ãû:ÃÜÂ롱¸ñʽ½øÐÐÈÏÖ¤¡£

Http DigestÈÏÖ¤£ºµ±¿Í»§¶ËµÚÒ»´ÎÇëÇó·þÎñ¶Ë×ÊԴʱ£¬·þÎñ¶Ë»á·µ»ØÒ»¸öËæ»úÊý(nonce), È»ºó¿Í»§¶Ë»áͨ¹ý¶à´ÎMD5¼ÓÃÜÀ´¼ÆËã³öÀ´responseµÄÖµ (response=MD5(HA1:nonce:HA2)), ÆäÖÐHA1=MD5(username:realm:password), HA2=MD5(method:digestURI). µ±·þÎñ¶ËÄõ½Õâ¸öresponse£¬ÄÇôËü»á´ÓDBÈ¡³öÓû§ÃûÃÜÂëÀ´×öͬÑùµÄ²Ù×÷À´¿´¼ÆËã³öÀ´µÄresponseÊÇ·ñÒ»Ö£¬Èç¹ûÒ»Ö£¬Ôò±íÃ÷ÈÏ֤ͨ¹ý¡£

Cookies & Session£ºÔÚµÚÒ»´ÎµÇ½ÇëÇóÖд«µÝÓû§ÃûÃÜÂ룬·þÎñ¶ËÔÚУÑé½áÊøºóÉú³ÉÒ»¸ösession-id£¬²¢½«Õâ¸ösession-idºÍÓû§¹ØÁª£¬È»ºóͨ¹ýhttp responseµÄcookie header·µ»Ø¸ø¿Í»§¶Ë£¬¿Í»§¶ËÖ»ÐèÒª´æ´¢Õâ¸öcookie²¢ÔÚºóÐøµÄÇëÇó¶¼´øÉÏÕâ¸öcookie¾Í¿ÉÒÔ¡£

JWT£¨Json web token£©£ºÒ»ÖÖ°²È«±ê×¼(RFC 7519)¡£·þÎñÆ÷ÈÏÖ¤ÒÔºó£¬Éú³ÉÒ»¸ö JSON ¶ÔÏ󣬷¢»Ø¸øÓû§£¬Óû§Óë·þÎñ¶ËͨÐŵÄʱºò£¬¶¼Òª·¢»ØÕâ¸ö JSON ¶ÔÏó¡£·þÎñÆ÷Íêȫֻ¿¿Õâ¸öºÏ·¨Ç©ÃûµÄ¶ÔÏóÈ϶¨Óû§Éí·Ý¡£

»¥ÁªÍø³£ÓÃÊÚȨÀíÂÛ

ACL: ¿ØÖÆ·ÃÎÊÁбí(Access Control List) ¡£ACLÊÇÃæÏò"×ÊÔ´"µÄ·ÃÎÊ¿ØÖÆÄ£ÐÍ£¬»úÖÆÊÇÎ§ÈÆ"×ÊÔ´"Õ¹¿ªµÄ¡£ÔÚACLÖУ¬°üº¬Óû§(User)¡¢×ÊÔ´(Resource)¡¢×ÊÔ´²Ù×÷(Operation)Èý¸ö¹Ø¼üÒªËØ¡£Ã¿Ò»Ïî×ÊÔ´£¬¶¼ÅäÓÐÒ»¸öÁÐ±í£¬¼Ç¼ÄÄЩÓû§¿ÉÒÔ¶ÔÕâÏî×ÊÔ´Ö´ÐÐÄÄЩ²Ù×÷¡£µ±ÏµÍ³ÊÔͼ·ÃÎÊÕâÏî×ÊԴʱ£¬»á¼ì²éÕâ¸öÁбíÖÐÊÇ·ñÓйØÓÚµ±Ç°Óû§µÄ²Ù×÷ȨÏÞ¡£

RBAC: »ùÓÚ½ÇÉ«µÄ·ÃÎÊ¿ØÖÆ(Role-BasedAccess Control)¡£RBACÈÏΪÊÚȨʵ¼Ê¾ÍÊÇ who£¬what£¬how ÈýÕßÖ®¼äµÄ¹ØÏµ£¬¼´ who ¶Ô what ½øÐÐ how µÄ²Ù×÷¡£

OAuth2£ºOAuthÊÇÒ»¸ö¹ØÓÚÊÚȨ£¨authorization£©µÄ¿ª·ÅÍøÂç±ê×¼£¬Ä¿Ç°µÄ°æ±¾ÊÇ2.0°æ¡£

»ùÓÚ½ÇÉ«µÄ·ÃÎÊ¿ØÖÆ

RBACÈÏΪȨÏ޵Ĺý³Ì¿ÉÒÔ³éÏó¸ÅÀ¨Îª£ºÅжϡ°WhoÊÇ·ñ¿ÉÒÔ¶ÔWhat½øÐÐHowµÄ·ÃÎʲÙ×÷£¨Operator£©¡±Õâ¸öÂß¼­±í´ïʽµÄÖµÊÇ·ñΪTrueµÄÇó½â¹ý³Ì¡£¼´½«È¨ÏÞÎÊÌâת»»ÎªWho¡¢What¡¢HowµÄÎÊÌâ¡£who¡¢what¡¢how¹¹³ÉÁË·ÃÎÊȨÏÞÈýÔª×é¡£

RBACµÄºËÐÄÄ£ÐÍͼÈçÏ£º

RBACµÄ¹Ø×¢µãÔÚÓÚ Role ºÍ User, Permission µÄ¹ØÏµ¡£³ÆÎª User assignment(UA) ºÍ Permission assignment(PA)¡£¹ØÏµµÄ×óÓÒÁ½±ß¶¼ÊÇ Many-to-Many ¹ØÏµ¡£¾ÍÊÇ user ¿ÉÒÔÓжà¸ö role£¬role ¿ÉÒÔ°üÀ¨¶à¸ö user¡£User ͨ¹ý³ÉΪ Role ¶øµÃµ½ÕâЩ Role µÄ Permission£¬Role ¸ôÀëÁË User ºÍ Permission µÄÂß¼­¹ØÏµ¡£

ʵÌå¹ØÏµÍ¼ÈçÏ£º

Óû§£¨user£©£ºÈË¡¢»úÆ÷¡¢ÍøÂçµÈ£¬½øÐÐ×ÊÔ´»ò·þÎñ·ÃÎʵÄʵʩÖ÷Ìå

½ÇÉ«£¨role£©£ºÒ»¸ö¹¤×÷Ö°ÄÜ£¬±»ÊÚÓè½ÇÉ«µÄÓû§½«¾ßÓÐÏàÓ¦µÄȨÍþºÍÔðÈÎ

»á»°£¨session£©£º´ÓÓû§µ½Æä¼¤»îµÄ½ÇÉ«¼¯ºÏµÄÒ»¸öÓ³Éä

ȨÏÞ£¨permission£©£º¶ÔÊÜRBAC±£»¤µÄÒ»¸ö»ò¶à¸ö¶ÔÏóÖ´ÐÐij¸ö²Ù×÷µÄÐí¿É

²Ù×÷£¨operation£©£ºÒ»¸ö³ÌÐò¿ÉÖ´ÐеÄÓ³Ïñ£¬±»µ÷ÓÃʱΪÓû§Ö´ÐÐijЩ¹¦ÄÜ

¿ÍÌ壨object£©£ºÐèÒª½øÐзÃÎÊ¿ØÖƵÄϵͳ×ÊÔ´£¬ÀýÈ磺Îļþ¡¢´òÓ¡»ú¡¢Êý¾Ý¿â¼Ç¼µÈ

ij¸öÖ÷Ì壨subject£©¶Ôij¸ö¿ÍÌ壨object£©ÐèҪʵʩijÖÖ²Ù×÷£¨operation£©£¬ÏµÍ³¶ÔÕâÖÖ²Ù×÷µÄÏÞÖÆ¾ÍÊÇȨÏÞ¿ØÖÆ¡£ÔÚÒ»¸ö°²È«µÄϵͳÖУ¬Í¨¹ýÈÏÖ¤À´È·ÈÏÖ÷ÌåµÄÉí·Ý¡£¿ÍÌåÊÇÒ»ÖÖ×ÊÔ´£¬ÊÇÖ÷Ìå·¢ÆðÇëÇóµÄ¶ÔÏó¡£Ö÷ÌåËùÄÜ×öʲô£¬¾ÍÊÇȨÏÞ£¬È¨ÏÞ¿ÉÒÔϸ·ÖΪ²»Í¬µÄÄÜÁ¦£¬ÀýÈ磺ÔÚLinuxÎļþϵͳÖУ¬½«È¨ÏÞ·ÖΪ ¶Á¡¢Ð´¡¢Ö´ÐÐ ÈýÖÖÄÜÁ¦¡£

ÊÊÓÃÓÚRBACÄ£Ð͵ĿªÔ´¿ò¼Ü

Apache Shiro

ShiroÊÇÒ»¸öÇ¿´ó¶øÁé»îµÄ¿ªÔ´°²È«¿ò¼Ü£¬Äܹ»·Ç³£ÇåÎúµÄ´¦ÀíÈÏÖ¤¡¢ÊÚȨ¡¢¹ÜÀí»á»°ÒÔ¼°ÃÜÂë¼ÓÃÜ¡£ShiroÔÚ±£³ÖÇ¿´ó¹¦ÄܵÄͬʱ£¬»¹ÔÚ¼òµ¥ÐÔºÍÁé»îÐÔ·½ÃæÓµÓо޴óÓÅÊÆ¡£Shiro¶Ô½ÇÉ«µÄ¼òµ¥µÄǩȨ£¨·ÃÎÊ¿ØÖÆ£©£¬Ö§³ÖϸÁ£¶ÈµÄǩȨ£»²»¸úÈκεĿò¼Ü»òÕßÈÝÆ÷À¦°ó£¬¿ÉÒÔ¶ÀÁ¢ÔËÐС£

Spring Security

Spring SecurityÌṩÁËÒ»Ì× Web Ó¦Óð²È«ÐÔµÄÍêÕû½â¾ö·½°¸¡£ÔÚÓû§ÈÏÖ¤·½Ã棬Spring Security ¿ò¼ÜÖ§³ÖÖ÷Á÷µÄÈÏÖ¤·½Ê½£¬°üÀ¨ HTTP »ù±¾ÈÏÖ¤¡¢HTTP ±íµ¥ÑéÖ¤¡¢HTTP ÕªÒªÈÏÖ¤¡¢OpenID ºÍ LDAP µÈ¡£ÔÚÓû§ÊÚȨ·½Ã棬Spring Security ÌṩÁË»ùÓÚ½ÇÉ«µÄ·ÃÎÊ¿ØÖƺͷÃÎÊ¿ØÖÆÁÐ±í£¨Access Control List£¬ACL£©£¬¿ÉÒÔ¶ÔÓ¦ÓÃÖеÄÁìÓò¶ÔÏó½øÐÐϸÁ£¶ÈµÄ¿ØÖÆ¡£

Apache Shiro VS Spring Security

³ýÁ˲»ÄÜÍÑÀëSpring£¬shiroµÄ¹¦ÄÜSpring Security¶¼ÓС£¶øÇÒSpring Security¶ÔOauth¡¢OpenIDÒ²ÓÐÖ§³Ö,ShiroÔòÐèÒª×Ô¼ºÊÖ¶¯ÊµÏÖ¡£µ«Apache ShiroµÄѧϰÄѶÈÒªµ×ºÜ¶à£¬Èç¹û¶ÔApache Shiro ºÍ Spring Security¶¼²»ÊìµÄÍŶӣ¬½¨ÒéÖ±½ÓÉÏÊÖshiro¡£

OAuth2.0

OAuth ÊÇÒ»¸öÔÚ²»ÌṩÓû§ÃûºÍÃÜÂëµÄÇé¿öÏ£¬ÊÚȨµÚÈý·½Ó¦Ó÷ÃÎÊ Web ×ÊÔ´µÄ°²È«Ð­Òé¡£ÀýÈçÒ»¸ö OAuth ³¡¾°£ºÓû§½«ÕÕÆ¬´æ´¢ÔÚGoogle£¬È»ºóÔÚ"ÔÆ³åÓ¡"µÄÍøÕ¾£¬½«ÕÕÆ¬³åÓ¡³öÀ´¡£ÄÇô£¬"ÔÆ³åÓ¡"ÍøÕ¾ÐèÒª»ñµÃÓû§µÄÊÚȨÀ´¶ÁÈ¡GoogleÉϵÄÓû§ÕÕÆ¬¡£

OAuthÔÚ"¿Í»§¶Ë"Óë"·þÎñÌṩÉÌ"Ö®¼ä£¬ÉèÖÃÁËÒ»¸öÊÚȨ²ã£¨authorization layer£©¡£¡°¿Í»§¶Ë"²»ÄÜÖ±½ÓµÇ¼"·þÎñÌṩÉÌ¡±£¬Ö»ÄܵǼÊÚȨ²ã£¬ÒԴ˽«Óû§Óë¿Í»§¶ËÇø·Ö¿ªÀ´¡£"¿Í»§¶Ë"µÇ¼ÊÚȨ²ãËùÓõÄÁîÅÆ£¨token£©£¬ÓëÓû§µÄÃÜÂ벻ͬ¡£Óû§¿ÉÒÔÔڵǼµÄʱºò£¬Ö¸¶¨ÊÚȨ²ãÁîÅÆµÄȨÏÞ·¶Î§ºÍÓÐЧÆÚ¡£

OAuth µÄһЩÃû´Ê£º

Third-party application£ºµÚÈý·½Ó¦ÓóÌÐò£¬ÓÖ³Æ ¡°Client¡± ¿Í»§¶Ë

HTTP Service£ºHTTP·þÎñÌṩÉÌ£¬ÉÏÀýÖеÄGoogle

Resource Owner£º×ÊÔ´ËùÓÐÕߣ¬¾ÍÊÇÓû§

User Agent£ºÓû§´úÀí£¬¾ÍÊÇä¯ÀÀÆ÷

Authorization server£ºÈÏÖ¤·þÎñÆ÷£¬¼´·þÎñÉÌÌṩÉÌרÃÅ´¦ÀíÈÏÖ¤µÄ·þÎñÆ÷

Resource server£º×ÊÔ´·þÎñÆ÷£¬¼´·þÎñÌṩÉÌ´æ·ÅÓû§Éú³ÉµÄ×ÊÔ´µÄ·þÎñÆ÷

¿Í»§¶Ë±ØÐëµÃµ½Óû§µÄÊÚȨ£¨authorization grant£©£¬²ÅÄÜ»ñµÃÁîÅÆ£¨access token£©¡£OAuth 2.0¶¨ÒåÁËËÄÖÖÊÚȨ·½Ê½¡£

ÊÚȨÂëģʽ£¨authorization code£©

¼ò»¯Ä£Ê½£¨implicit£©

ÃÜÂëģʽ£¨resource owner password credentials£©

¿Í»§¶Ëģʽ£¨client credentials£©

ÅÄÅÄ´û¼Ü¹¹Ê¦Ñ¸øÁËÒ»¸öÁ÷³ÌͼÀ´°ïÖúÅжÏʲôÑùµÄ³¡¾°ÏÂÐèÒª²ÉÓÃÄÄÖÖOAuth2µÄworkflow£º

Spring Cloud Security

Spring Cloud SecurityÌṩÁËÒ»×éÓÃÓÚ¹¹½¨°²È«Ó¦ÓóÌÐòºÍ·þÎñµÄ¼òµ¥¿ò¼Ü¡£»ùÓÚSpring BootºÍSpring Security OAuth2£¬ÎÒÃÇ¿ÉÒÔ¿ìËÙ´´½¨ÊµÏÖ³£¼ûģʽµÄϵͳ£¬Èçµ¥µãµÇ¼¡¢ÁîÅÆË¢ÐºÍÁîÅÆ½»»»¡£

Spring Security VS Spring Cloud Security

Spring Security½â¾öµÄÊǵ¥Ìå·þÎñµÄÊÚȨÈÏÖ¤ÎÊÌ⣬Spring Cloud Security½â¾öµÄÊÇ·Ö²¼Ê½¼Ü¹¹ÏµÍ³¼äÊÚȨÎÊÌâ¡£ÔÚʹÓÃSpring Cloud Security OAuth2.0µÄ΢·þÎñÌåϵÄÚ²¿£¬ÒÀÈ»ÐèҪʹÓÃSpring SecurityʵÏÖ×ÊÔ´·þÎñÄڵķÃÎÊȨÏÞ¿ØÖÆ¡£

   
2213 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶