从安全角度来看,我理解了一个用于Set-Cookie Response标头的值的httponly标志的概念,并防止了XSS攻击。
我不明白的是,什么是ServiceStack使用保存bearerToken的“ss-tok”cookie。
根据ServiceStack documentation我可以通过发布无状态JWT Cookie来转换为无状态会话:
var authResponse = client.Send(new Authenticate {
provider = "credentials",
UserName = username,
Password = password,
UseTokenCookie = true
});
UseTokenCookie设置为true。并且成功进行身份验证后会创建httponly“ss-tok”cookie。
然而,我似乎无法使用这个以“ss-tok”名称存储的令牌cookie。我无法使用Javascript检索它,我似乎无法在JsonServiceClient
个请求中发送它。
我的ServiceStack资源微服务在任何安全请求中都不会收到“ss-tok”的值。我必须为任何安全请求明确设置bearerToken。
我必须使用ServiceStack documentation on this matter中所述的JsonServiceClient
明确传递bearerToken或refreshToken。
我一定是做错了,I thought this documentation是我遗漏的部分,这段代码在这里:
var client = new JsonServiceClient(baseUrl);
client.SetCookie("ss-tok", jwtToken);
但是这段代码实际上没有意义,因为“ss-tok”的值没有被发送到我的资源微服务,我必须像我之前所说的那样显式设置bearerToken值:
var client = new JsonServiceClient(baseUrl);
client.bearerToken = jwtToken;
这意味着我必须将jwtToken存储在我自己的cookie值中,因为我的应用程序需要在应用程序的不同区域创建多个JsonServiceClient实例。