ASP.NET Core 2.0での備忘録。
開発中に一時的にAuthorize属性を無効にしたいとき、以下でとりあえず無効化されるみたいです。
services.AddMvc(opts => { opts.Filters.Add(new AllowAnonymousFilter()); } );
いろんなところに修正いれるよりは楽そうです。元ネタはタイムリーな感じに、以下で知りました。
もっとベターな方法があるかもしれませんが。
ASP.NET Core 2.0での備忘録。
開発中に一時的にAuthorize属性を無効にしたいとき、以下でとりあえず無効化されるみたいです。
services.AddMvc(opts => { opts.Filters.Add(new AllowAnonymousFilter()); } );
いろんなところに修正いれるよりは楽そうです。元ネタはタイムリーな感じに、以下で知りました。
もっとベターな方法があるかもしれませんが。
長らくAzure Storageは、キーさえあればアクセス出来てしまって、そこをつつかれる状況が続いていたわけですが、ファイアウォールが導入されました。
例によってプレビューなんですが、使えるリージョンが決まっており、現時点では日本ではサポートされていません。
該当するリージョンにストレージアカウントを作成すると、ファイアウォールと仮想ネットワーク が表示されますので、それを選択します。
アクセス元のラジオボタンを選択されたネットワークにすると、設定画面が表れます。
普通に許可するネットワークレンジを設定しつつ、MS内部からのアクセスを許可する例外設定なども可能です。
ためしに、アクセスできないよう設定すると、Storage Explorerからは以下のような感じでエラーメッセージが表示されます。
以上
ASP.NET Core 2.0 ベースの Web APIで認証をかける方法を知りたかったので、サンプル作って挙動を確認してみたメモ。
最近HDDに埋もれてしまうので、Githubに置くのがよいのかなと思ったり。
m-moris/asp-netcore-jwt-validation
Startup.cs にて、JWTの設定をする。いくつか書き方はあるみたいなんだけども以下。
public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { // for debug. options.RequireHttpsMetadata = false; options.Audience = Config.Audience; options.TokenValidationParameters = new TokenValidationParameters { ValidateAudience = true, ValidateIssuerSigningKey = true, ValidateIssuer = true, ValidIssuer = Config.Issuer, IssuerSigningKey = KeyStore.GetSymmetricSecurityKey() }; }); services.AddSingleton<Users, Users>(); services.AddMvc(); }
JWTの生成は、JwtSecurityToken
クラスを使う。署名は適当。
JwtSecurityToken CreateJwtSecurityToken(User user) { var claims = new List<Claim>() { new Claim(JwtRegisteredClaimNames.Jti, Config.Id), new Claim(JwtRegisteredClaimNames.Sub, user.Name), new Claim(ClaimTypes.Sid, Config.Id), new Claim(ClaimTypes.Name , user.Name), new Claim(ClaimTypes.Role, user.Role) }; var token = new JwtSecurityToken( issuer: Config.Issuer, audience: Config.Audience, claims: claims, expires: DateTime.UtcNow.AddDays(7), signingCredentials: new SigningCredentials(KeyStore.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256) ); return token; }
API側は属性ベース。
[Authorize] [Route("api/values/user")] [HttpGet] public ActionResult Get() { ... }
発行されたTokenは、以下のサイトで簡単でデコードしてくれる。
Startup.cs
JWTの設定を追加して設定すればOK。あとはAPI側に属性つければOK。