首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >资源服务器中的ASP.NET 5 JWT令牌验证

资源服务器中的ASP.NET 5 JWT令牌验证
EN

Stack Overflow用户
提问于 2016-02-26 15:39:35
回答 1查看 561关注 0票数 1

我使用JWT tokens创建了一个asp.net 5 rc-1身份验证服务器

这是我的startup.cs代码

代码语言:javascript
运行
复制
var key = new RsaSecurityKey(new RSACryptoServiceProvider(2048).ExportParameters(true));
TokenAuthOptions tokenOptions = new TokenAuthOptions()
{
    Audience = "webappname",
    Issuer = "http://webappname.com",
    Key = key,
    SigningCredentials = new SigningCredentials(key, SecurityAlgorithms.RsaSha512Signature)
};

app.UseJwtBearerAuthentication(options =>
{
    options.TokenValidationParameters.IssuerSigningKey = tokenOptions.Key;
    options.TokenValidationParameters.ValidAudience = tokenOptions.Audience;
    options.TokenValidationParameters.ValidIssuer = tokenOptions.Issuer;
    options.TokenValidationParameters.ValidateSignature = true;
    options.TokenValidationParameters.ValidateLifetime = true;

    options.TokenValidationParameters.ClockSkew = TimeSpan.FromMinutes(0);
});

并在同一个项目中创建了一个MVC控制器OAuthController.cs来获取令牌

代码语言:javascript
运行
复制
[HttpGet, Route("Signin")]
public dynamic Signin(string un, string pw)
{
    if (valid user)
    {
        DateTime? expires = DateTime.UtcNow.AddMinutes(5);
        var token = GetToken(un, expires);
        return new { authenticated = true, entityId = 1, token = token, tokenExpires = expires };
    }
    return new { authenticated = false };
}

private string GetToken(string user, DateTime? expires)
{
    var handler = new JwtSecurityTokenHandler();

    ClaimsIdentity identity = new ClaimsIdentity(new GenericIdentity(user, "TokenAuth"), new[] { new Claim("EntityID", "1", ClaimValueTypes.Integer) });

    identity.AddClaim(new Claim(ClaimTypes.Role, "Admin2"));

    var securityToken = handler.CreateToken(
            issuer: _tokenOptions.Issuer,
            audience: _tokenOptions.Audience,
            signingCredentials: _tokenOptions.SigningCredentials,
            subject: identity,
            expires: expires
        );
    return handler.WriteToken(securityToken);
}

现在,当我用用户名和密码调用方法Signin时,我得到的是jwt令牌,它可以访问同一个应用程序中的[Authorize("Bearer", Roles="Admin2")]控制器方法。

如何使用相同的令牌来对不同的应用程序进行身份验证

EN

回答 1

Stack Overflow用户

发布于 2016-04-26 22:41:23

您的第二个应用程序只需要访问用于签名令牌的相同RSA密钥。然后,通过配置与第一个应用程序完全相同的app.UseJwtBeaerAuthentication方法,您可以在第二个应用程序中使用令牌。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35655855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档