【发布时间】:2018-07-22 17:19:18
【问题描述】:
我有 3 个项目,一个 MVC .net 核心网站、一个 API 服务和一个 IdentityServer (IdentityServer4)。登录网站就像一个魅力。当我想从 API 获取数据时,问题就开始了。从 httpcontext 获取 access_token 失败并返回 null。奇怪的是,当我调试它时,我似乎从 httpcontext 中得到了一个 access_token。只有当我从实时网络服务器运行网站时才会出现问题。
我将我的 OpenIdConnect 配置如下:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultAuthenticateScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = "https://idserverurl";
options.RequireHttpsMetadata = true;
options.ClientId = "clientid";
options.ClientSecret = "xxxxxxxx";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("offline_access");
};
});
要为 API 调用设置承载令牌,我使用以下代码:
var client = new HttpClient();
var accessToken = await HttpContext.GetTokenAsync("access_token");
client.SetBearerToken(accessToken);
当我在调试中运行此代码时,我会从 HttpContext 获取 access_token。当我从实时服务器运行它时,我得到空值。
有人知道我做错了什么吗?会不会是服务器级别的配置错误?
【问题讨论】:
-
你能告诉我们
services.AddIdentityServer()行吗?
标签: asp.net-core-mvc access-token identityserver4 openid-connect