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協議
- ??與?:的區別
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- &與&&, |與||區別
- CAS與Spring的整合Spring
- in與exist , not in與not exist 的區別
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- GET 與 POST 的區別
- WebSocket 與 Socket 的區別Web
- Postgresql與MySQL的區別MySql
- chown與chmod的區別
- LESS與SASS的區別
- free 與 CFRelease 的區別
- gulp與webpack的區別Web
- @Autowired 與@Resource的區別
- let與var的區別
- post與get的區別
- HashSet與HashMap的區別HashMap
- maven與ant的區別Maven
- __new()__ 與 __init()__的區別
- TCP與UDP的區別TCPUDP
- Mysql與mongodb的區別MySqlMongoDB
- typedef與define的區別
- Eureka與Zookeeper的區別
- buffer與cache的區別
- async與defer的區別
- synchronized與Lock的區別synchronized
- kill與pkill的區別
- int與Integer的區別
- HTML與XHTML的區別HTML
- mysql與Oracle的區別MySqlOracle
- UDP與TCP的區別UDPTCP
- Javascript中“==”與“===”的區別JavaScript
- for...in與for...of的區別
- Oracle - @和@@、&與&& 的區別Oracle