我有一个包含所有用户帐户的授权服务器,我的应用程序服务器有MVC5控制器,它有自己独立的数据库和视图。
我可以使用HttpClient从我的授权服务器获取持有者令牌:
using (var client = new HttpClient())
{
var result = await client.PostAsync(BuildActionUri("/Token"), new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("userName", userName),
new KeyValuePair<string, string>("password", password)
}));
string json = await result.Content.ReadAsStringAsync();
if (result.IsSuccessStatusCode)
{
return JsonConvert.DeserializeObject<T>(json);
}
throw new ApiException(result.StatusCode, json);
}
现在如何存储授权令牌,以便控制器知道用户已获得授权?
答案 0 :(得分:0)
如果两台服务器共享一个受信任的网络,那么您可以通过可信网络上的某些传输将auth令牌发送到应用服务器 - 或者,应用服务器会向auth服务请求验证令牌。但是,您必须确保通过公共网络无法使用此功能,因为任何人都可以注入信任。
否则,如果无法建立可信连接,则需要某种类型的共享数据源。如果您绝对没有其他选择,这可以是数据库,内存缓存,文件系统。
无论如何,需要有一种机制来共享令牌及其在服务器之间的到期时间。