JWT
Articles
跨網站登入的實際應用
跨網站登入就是跨多個不同的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>
0
min.
JWT學習筆記Part2(驗證Token)-完結篇
前篇請參考這裡,因為使用Jose JWT,處理起來相對簡單很多,以下是驗證資料是否被竄改過,只要有被改過,無論是簽章,或是header、payload,改過都會驗證失效的。
public Dictionary<string, string> VerifyToken(string token)
{
RSAParameters rsaParams;
var verifyPass = false;
var exp =...
0
minutes
JWT學習筆記Part1(產製Token)
跨伺服器交換資料,用JWT就對了,安全可靠。
認識JWT,請參考以下文章:
以 JSON Web Token 替代傳統 Token
有了基本的認識後,HS開頭的簽章方式是用secret(密語),把secret給其他伺服器就能驗證簽章,本案例使用asp.net,請參考以下Code(要用NuGet下載System.JdentityModel.Tokens.Jwt)。
// header
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("db3OIsj+BXE9NZDy0t8W3TcNekrF+2d/1sFnWG4HnV8TZY30iTOdtVWJG8abWvB1GlOgJuQZdcF2Luqm/hccMw=="));
var signingCredentials...
1
minute