跨網站登入就是跨多個不同的Web Server,因為Web Server有自己的Session線程,如果Session無法做到共用的話,就必須要用其他方式處理,如下圖簡單的示意圖:
第一步:是A Web Server給了Client Browser一個連結,而這個連結是連線到A Web Server的pagaA。
第二步:A Web Server回應一個Form表單,但是立即submit出去,而form表單中的src指向B Web Server。
第三步:B Web Server接收了來自Client Browser就會產生B Web Server Session,這個時候,因為收了Client的post資料,資料內可以是Token或者是帳號與密碼(這個部分最好用JWT加解密)。而拿到的Token也可以用Server to Server的方式去詢問資料的有效性。
以上是一個簡單的跨站資料傳輸保有Session的流程,但是不建議在外部網路使用喔,因為有一個弱點,就是在Client Browse可以停用java script,這樣給client的表單就不會被送出,那麼就可以利用來作手腳了。
Form表單的內容可以參考如下:
<form action='B Web Server page' id='frmToken' method='post'>
<input type='hidden' name='token' value='Token Vakye' />
</form>
<script>
document.getElementById('frmToken').submit();
</script>