场景:我有2个网络应用。其中一个是an authorization server(由IdentityServer4实现),另一个是a client。它们通过Authorization Code grant进行互动。
最终用户在前端使用Angular2与客户端应用程序一起工作。为了让她登录(通过auth服务器应用程序作为Facebook等第三方)并获得JWT-token(发行者是客户端应用程序),我创建了以下中间件处理请求,这些请求是在授权成功授权后由最终用户发出的。服务器端(即传入请求必须包含授权码):
using IdentityModel.Client;
public async Task Invoke(HttpContext httpContext)
{
if (!httpContext.Request.Path.Equals("/api/connect/authcallback", StringComparison.Ordinal))
{
await next(httpContext);
return;
}
//try to get auth code from the request
string code = httpContext.Request.Form["code"];
//try to request access token from the auth server app
var tokenClient = new TokenClient("https://AuthServer.com/connect/token", ClientId, ClientSecret);
var responseToken = await tokenClient.RequestAuthorizationCodeAsync(code, "http://ourcallback.com");
var token = responseToken.AccessToken;
//that's good, so create JWT-token for the end-user
var JwtToken = JsonConvert.SerializeObject(CreateJwtToken());
//what should I do further?
}
我的问题是如何将JWT令牌传递给最终用户的Angular2应用程序?从代码点发送它是错误的,因为Angular2必须将它设置为LocalStorage。也许我应该使用令牌重定向用户?我可以这样做(如何通过)?