2
我正在嘗試學習新的webapi2.1驗證片段。向webapi不記名令牌添加額外的詳細信息
我得到了不記名令牌,並與我的webapi一起工作。我希望做的下一件事是能夠在令牌中存儲一些附加信息(如果可能的話),所以當客戶端發回令牌時,我可以檢索到詳細信息而無需發送多個值。
令牌是否可以擴展以包含自定義數據?
很抱歉,如果這個問題是有點含糊,但我已經繞了個大追捕,似乎無法找到任何進一步的信息
謝謝
我正在嘗試學習新的webapi2.1驗證片段。向webapi不記名令牌添加額外的詳細信息
我得到了不記名令牌,並與我的webapi一起工作。我希望做的下一件事是能夠在令牌中存儲一些附加信息(如果可能的話),所以當客戶端發回令牌時,我可以檢索到詳細信息而無需發送多個值。
令牌是否可以擴展以包含自定義數據?
很抱歉,如果這個問題是有點含糊,但我已經繞了個大追捕,似乎無法找到任何進一步的信息
謝謝
由於令牌有一個「祕密」簽訂密鑰 - 只有發行者可以向其添加數據。
在您的Web API中接收到令牌後,您可以修改索賠集的內容 - 這稱爲索賠轉換。
在本質上你正在編寫一些代碼,檢查傳入令牌和添加應用程序特定權利所得到的本金。
// Transform claims to application identity
app.UseClaimsTransformation(TransformClaims);
private Task<ClaimsPrincipal> TransformClaims(ClaimsPrincipal incoming)
{
if (!incoming.Identity.IsAuthenticated)
{
return Task.FromResult<ClaimsPrincipal>(incoming);
}
// Parse incoming claims - create new principal with app claims
var claims = new List<Claim>
{
new Claim(ClaimTypes.Role, "foo"),
new Claim(ClaimTypes.Role, "bar")
};
var nameId = incoming.FindFirst(ClaimTypes.NameIdentifier);
if (nameId != null)
{
claims.Add(nameId);
}
var thumbprint = incoming.FindFirst(ClaimTypes.Thumbprint);
if (thumbprint != null)
{
claims.Add(thumbprint);
}
var id = new ClaimsIdentity("Application");
id.AddClaims(claims);
return Task.FromResult<ClaimsPrincipal>(new ClaimsPrincipal(id));
}
謝謝您的解釋。我已經把你的例子,並將其添加到我的項目,但它不知道app.UseClaimsTransformation(TransformClaims); UseClaimsTransformation - 這是什麼名字空間? –
對不起,我沒有思考包引用 –
啊對不起,最後一個問題。爲每個請求插入靜態數據,而不是爲每個請求添加自定義聲明值?我有一個包含商家的應用程序,並且我想將個人businessId作爲一個索賠 –