Identity Server 4 学习(七)访问受认证保护的A

2021-11-12  本文已影响0人  寻找无名的特质

我们对前面的客户端稍加改造,使它可以访问受认证保护的客户端。我们先试验使用HttpClient进行后台访问。先在Startup的配置中增加对myapi的访问:

 options.Scope.Add("myapi");

然后创建一个新的页面,修改后台文件的代码如下:

using System.Net.Http;
using System.Threading.Tasks;
using IdentityModel.Client;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Newtonsoft.Json.Linq;

namespace MyClientWebHttps.Pages
{
    public class GetDataJsModel : PageModel
    {
        public string token;
        public string result;
        public async Task OnGet()
        {
            var auth = await HttpContext.AuthenticateAsync();

            var tokens = auth.Properties;
            token = tokens.Items[".Token.access_token"];

            var apiClient = new HttpClient();
            apiClient.SetBearerToken(token);

            var response = await apiClient.GetAsync("http://localhost:5007/WeatherForecast");
            if (!response.IsSuccessStatusCode)
            {
                result=response.StatusCode.ToString();
            }
            else
            {
                var content = await response.Content.ReadAsStringAsync();
                result = content;// JArray.Parse(content);
            }
        }
    }
}

代码很简单,就是取出access_token,并使用这个token访问api资源。访问获得的结果保存在result中。下一步我们研究如何使用ajax访问web api。

上一篇下一篇

猜你喜欢

热点阅读