【发布时间】:2016-02-01 03:52:19
【问题描述】:
背景
我正在使用这些技术来保护 WebApi 应用程序:
- ThinkTecture.IdentityServer3
- OWIN(天蓝色)
- 单页应用 - javascript 客户端
- 请参阅简单 OAuth2 演练示例 (github)
在上面的示例中,.NET 控制台应用程序客户端从 IdentityServer 请求令牌并使用它来访问 WebApi 应用程序。这在示例中运行良好。
我想将 .NET 控制台应用程序客户端更改为 javascript 单页应用程序客户端。我尝试添加一个代理登录控制器,它代表 javsacript 客户端向 IdentityServer 发出请求,并将令牌在 cookie 中返回给客户端。
代码
[HttpPost]
[Route("login")]
public HttpResponseMessage Login(LoginRequest request) // Proxy to IdentityServer3
{
var tokenClient = new TokenClient(
"https://localhost:44333/connect/token",
"javascript client",
"client secret");
var tokenResponse = _tokenClient.RequestResourceOwnerPasswordAsync(request.username, request.password, "api1").Result;
var cookie = new CookieHeaderValue("access_token", tokenResponse.AccessToken);
cookie.Expires = DateTimeOffset.Now.AddDays(1);
cookie.Domain = "localhost";
cookie.Path = "/";
var response = new HttpResponseMessage();
response.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return response;
}
我在 javascript 客户端中成功获取了访问令牌,但是 API 无法识别它。
问题
我应该如何将 IdentityServer 生成的令牌传递给 javascript 应用程序,以及如何使用它来访问 WebApi?
【问题讨论】:
-
Js 应用程序宁愿她使用隐式流。检查文档和示例。
标签: javascript azure asp.net-web-api identityserver3