CAS與OAuth2的區別
CAS與OAuth2的區別
CAS的單點登入時保障客戶端的使用者資源的安全 。
OAuth2則是保障服務端的使用者資源的安全 。
CAS客戶端要獲取的最終資訊是,這個使用者到底有沒有許可權訪問我(CAS客戶端)的資源。
OAuth2獲取的最終資訊是,我(oauth2服務提供方)的使用者的資源到底能不能讓你(oauth2的客戶端)訪問。
CAS的單點登入,資源都在客戶端這邊,不在CAS的伺服器那一方。 使用者在給CAS服務端提供了使用者名稱密碼後,作為CAS客戶端並不知道這件事。 隨便給客戶端個ST,那麼客戶端是不能確定這個ST是使用者偽造還是真的有效,所以要拿著這個ST去服務端再問一下,這個使用者給我的是有效的ST還是無效的ST,是有效的我才能讓這個使用者訪問。
OAuth2認證,資源都在OAuth2服務提供者那一方,客戶端是想索取使用者的資源。 所以在最安全的模式下,使用者授權之後,服務端並不能直接返回token,通過重定向送給客戶端,因為這個token有可能被黑客截獲,如果黑客截獲了這個token,那使用者的資源也就暴露在這個黑客之下了。 於是聰明的服務端傳送了一個認證code給客戶端(通過重定向),客戶端在後臺,通過https的方式,用這個code,以及另一串客戶端和服務端預先商量好的密碼,才能獲取到token和重新整理token,這個過程是非常安全的。 如果黑客截獲了code,他沒有那串預先商量好的密碼,他也是無法獲取token的。這樣oauth2就能保證請求資源這件事,是使用者同意的,客戶端也是被認可的,可以放心的把資源發給這個客戶端了。
總結:所以cas登入和OAuth2在流程上的最大區別就是,通過ST或者code去認證的時候,需不需要預先商量好的密碼。
相關文章
- SAML和OAuth2這兩種SSO協議的區別OAuth協議
- ??與?:的區別
- const與static的區別
- HTTP 與 HTTPS 的區別HTTP
- getAttribute() 與 attr() 的區別
- @import與<link> 的區別Import
- Postgresql與MySQL的區別MySql
- HashSet與HashMap的區別HashMap
- HashTable與ConcurrentHashMap的區別HashMap
- maven與ant的區別Maven
- __new()__ 與 __init()__的區別
- @Autowired 與@Resource的區別
- gulp與webpack的區別Web
- free 與 CFRelease 的區別
- post與get的區別
- Git與GitHub的區別Github
- Comparable與Comparator的區別
- volatile與synchronized的區別synchronized
- Javascript中“==”與“===”的區別JavaScript
- ICMP與IGMP的區別
- UDP與TCP的區別UDPTCP
- WebApp與NativeApp的區別WebAPP
- mysql與Oracle的區別MySqlOracle
- Synchronized 與 ReentrantLock 的區別synchronizedReentrantLock
- let與var的區別
- mybatis與hibernate的區別MyBatis
- buffer與cache的區別
- grid 與 treelist 的區別
- print 與 println 的區別
- Eureka與Zookeeper的區別
- Python中 ‘==‘ 與‘is‘的區別Python
- async與defer的區別
- http與https的區別HTTP
- GET 與 POST 的區別
- TCP與UDP的區別TCPUDP
- int與Integer的區別
- Mysql與mongodb的區別MySqlMongoDB
- kill與pkill的區別