0
WebAPI가 있는데 JWT를 사용할 수는 있지만 Angular 4.x 앱을 보안해야합니다. 저는 Microsoft의 OWIN Katana 3.x 패키지를 사용하여 최소한의 목표 (OAuth 없음)를 파악하려고합니다.OWIN JWT를 어떻게 만들고 소비합니까?
어떻게 할 수 있습니까?
WebAPI가 있는데 JWT를 사용할 수는 있지만 Angular 4.x 앱을 보안해야합니다. 저는 Microsoft의 OWIN Katana 3.x 패키지를 사용하여 최소한의 목표 (OAuth 없음)를 파악하려고합니다.OWIN JWT를 어떻게 만들고 소비합니까?
어떻게 할 수 있습니까?
다음은 작동하지 않습니다 (Microsoft/시스템 부분이 복잡하게 얽혀 있음). 그러나 그것은 내가 거의 쉽게 볼 수있는 가장 가까운 곳입니다.
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Security.Cryptography;
using Microsoft.IdentityModel.Tokens;
using Microsoft.Owin;
using Microsoft.Owin.Security.Jwt;
using Owin;
[assembly: OwinStartup(typeof(WebApplication1.Startup))]
namespace WebApplication1
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
var issuer = "test";
var audience = issuer;
var key = new AesManaged().Key;
var options = new JwtBearerAuthenticationOptions
{
AllowedAudiences = new[] { audience },
IssuerSecurityTokenProviders = new[] { new SymmetricKeyIssuerSecurityTokenProvider(issuer, key) }
};
app.UseJwtBearerAuthentication(options);
app.Map("/Login", subApp =>
{
subApp.Run(context =>
{
var tokenHandler = new JwtSecurityTokenHandler();
var tokenDescriptor = new SecurityTokenDescriptor
{
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.Sha256Digest),
Audience = audience,
Issuer = issuer,
Subject = new ClaimsIdentity(new[]
{
new Claim(ClaimTypes.Name, "Serge")
})
};
var token = tokenHandler.WriteToken(tokenHandler.CreateToken(tokenDescriptor));
return context.Response.WriteAsync(token);
});
});
}
}
}