如何在第三方成功验证后将jwt-token传递给Angular2应用程序?

时间:2017-03-08 18:10:21

标签: c# angular oauth-2.0 asp.net-core

场景:我有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。也许我应该使用令牌重定向用户?我可以这样做(如何通过)?

0 个答案:

没有答案