CAS與OAuth2的區別

小忽悠發表於2018-06-21

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去認證的時候,需不需要預先商量好的密碼。