授权和应用程序服务器 - 没有ajax。如何使用持票人代币?

时间:2015-01-26 18:58:45

标签: c# asp.net-mvc-5 asp.net-web-api2

我有一个包含所有用户帐户的授权服务器,我的应用程序服务器有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);
        }

现在如何存储授权令牌,以便控制器知道用户已获得授权?

1 个答案:

答案 0 :(得分:0)

如果两台服务器共享一个受信任的网络,那么您可以通过可信网络上的某些传输将auth令牌发送到应用服务器 - 或者,应用服务器会向auth服务请求验证令牌。但是,您必须确保通过公共网络无法使用此功能,因为任何人都可以注入信任。

否则,如果无法建立可信连接,则需要某种类型的共享数据源。如果您绝对没有其他选择,这可以是数据库,内存缓存,文件系统。

无论如何,需要有一种机制来共享令牌及其在服务器之间的到期时间。