ASP.NET Core

GraphQL.NET の DataLoader

GraphQL でネストしたデータを取得するクエリを発行するとき、 N+1 問題を回避するために、 ネストしたデータの先読み込みか遅延読み込みを行う必要がある。 先読み込みの場合は、クエリのリゾルバ内で Entity Framework Core の Include を使って実装できる…

GraphQL.NET でのページネーション

GraphQL でコレクションデータの取得やページネーションを実現する場合、 Relay 由来の Connection や Edge といったインタフェースを定義するのが定石になっているみたい。 GraphQL.NET はそれらをサポートしていて、ConnectionType や EdgeType といった型…

HTTP.sys でホストした Web API で Windows 認証と JWT Bearer 認証を共存させる

ASP.NET Core MVC で実装した Web API を HTTP.sys でホストすることで、利用に Windows 認証が必要な Web API を実現できた。 tnakamura.hatenablog.com これでひと段落と思いきや、JWT Bearer 認証もサポートする必要が出てきたので、HTTP.sys でホストし…

ASP.NET Core アプリを HTTP.sys でホストして Windows 認証を使用するメモ

外に公開する Web アプリなら、ASP.NET Core Identity や JWT Bearer 認証を採用するんだけど、社内で使う用だとユーザー管理がめんどい。Windows 認証の方が都合がいい。クライアントはほぼ全て Windows だし、Active Directory で管理してるからなおさら。…

GraphQL Server で GraphQL.EntityFramework を使う

ASP.NET Core 用の GraphQL Server を使うことで、 ASP.NET Core プロジェクトに GraphQL API を実装するのが楽になりそうだった。 tnakamura.hatenablog.com ただ、ASP.NET Core MVC でエンドポイントを自作する必要はなくなるけど、resolver は依然書く必…

ASP.NET Core 用 GraphQL Server 実装

ASP.NET Core MVC を使って GraphQL API のエンドポイントを実装してきたけど、ASP.NET Core 用の GraphQL Server 実装が存在することを今更知った。 www.nuget.org 気分は某CMの松重豊。「それさぁ、早くいってよぉ~」って感じだ。 いやまぁ、ちゃんと調べ…

ASP.NET Core で GraphQL API の Mutation を実装する

以前、ASP.NET Core で GraphQL API のサンプルを実装してみた。 tnakamura.hatenablog.com 当時必要だったのはクエリだけだったので、ミューテーションは後回しにしていたけど、 とうとうミューテーションが必要になってしまった。 真面目に GraphQL API を…

ASP.NET Core と Entity Framework Core を使った GraphQL API の実装が楽になるかもしれないライブラリ GraphQL.EntityFramework

先日 ASP.NET Core で GraphQL API を実装してみた。 tnakamura.hatenablog.com データベースから Entity Framework Core を使ってデータを取得する部分は自前で書いたわけだが、なかなか面倒だったのでなんとかしたいところ。 例えば Ruby だと graphql-rub…

ASP.NET Core で GraphQL API

GraphQL API が必要になったので、ASP.NET Core で実装できるか試してみた。ライブラリは現状 GraphQL 一択。 www.nuget.org GraphiQL っていう、GraphQL を試すのに便利な Web UI があるので、それも利用した。ASP.NET Core のミドルウェアを使えば組み込む…

ASP.NET Core のキャッチオールルートパラメーターでハマった

例えば、はてなブログのカスタム URL みたいな、entry/ 以下にすべてマッチするルートを定義する場合、ASP.NET Core MVC だと下記のように書く。 [HttpGet("entry/{*path}")] public async Task<IActionResult> Details(string path) { // IIS Express は %2F を / に戻して</iactionresult>…

IdentityServer4 の認証を差し替える方法

はじめに 外部に公開する REST API の認証・認可に OpenID Connect を選択した場合、ASP.NET Core での実装には IdentityServer4 を使うことになると思う。IdentityServer4 は認証のバックエンドに ASP.NET Core Identity をサポートしているので、新規の開…

ASP.NET Core MVC vs. WCF

はじめに 以前 WCF と gRPC のベンチマークを比較して、結果 gRPC の圧勝だった。 tnakamura.hatenablog.com ASP.NET Core MVC(Web API) と WCF ではどっちが速いか気になったので試してみた。WCF のサービスは今のところ .NET Framework で動かすしかないの…

Swashbuckle.AspNetCore で Failed to load API definition に遭遇したら

開発中の Web API に後から Swashbuckle.AspNetCore を追加したはいいけど、いざ Swagger UI を表示してみたら「Failed to load API definition」というエラーになって API 一覧が見れない。こんな感じのやつ。 このエラーに遭遇したら、ググる前にまず swag…

JwtBearer Authentication と ASP.NET Core Identity の 2 要素認証を無理やり組み合わせてみた

以前、JwtBearer Authentication の裏で ASP.NET Core Identity を使うことには成功した。 tnakamura.hatenablog.com ASP.NET Core Identity は 2 要素認証をサポートしているので、 JwtBearer Authentication を使う場合でもなんとか組み合わせることができ…

JwtBearer Authentication の裏で ASP.NET Core Identity を使う

認証に ASP.NET Core Identity を使うけど、アプリ向けに JwtBearer の認証もサポートしたい。JwtBearer でトークンを発行するときは、ユーザーを認証するコードを書くことになるわけなので、そこで Identity の SignInManager や UserManager を使えばいい…

ASP.NET Core はインテグレーションテストが書きやすい

ASP.NET Core はインテグレーションテストをちゃんとサポートしているので、Web API のテストが書きやすい。 www.nuget.org このパッケージを使えば、xUnit を使ったテストプロジェクトで Web API を簡単にホストしてテストできる。自分の場合、インテグレー…

JwtBearerAuthentication を使っている Web API を Swashbuckle.AspNetCore で試す

Swashbuckle.AspNetCore を使うことで、 ASP.NET Core で作成した Web API を Swagger UI 上で試せるようになった。 ただ、大抵の Web API では OAuth2 なり JWT Bearer なりの認証が必要、という風に実装していると思う。 自分の場合は JWT Bearer。 Swagge…

ASP.NET Core 2.0 で JWT を使った認証を実装する

先日、ASP.NET Core MVC で JWT を使った認証を実装する記事を書いた。 tnakamura.hatenablog.com しかし、ASP.NET Core 2.0 では認証まわりがガラッと変わってしまったので、 上の記事にある方法は使えなくなってしまった。 /(^o^)\ナンテコッタイ。 なので、ASP…

ASP.NET Core 2.0 でも Swashbuckle.AspNetCore は使えた

Swashbuckle.AspNetCore は ASP.NET Core 2.0 に対応していないから使えないと思っていたが、 勘違いだった。 github.com Swashbuckle.AspNetCore のイシューを読んで発覚。 github.com 実際に試してみたところ、ASP.NET Core 2.0 プロジェクトに Swashbuckl…

Microsoft.AspNetCore.Mvc.ApiExplorer を使って Web API ドキュメントを自作

開発している Web API を ASP.NET Core 2.0 に移行しようと思っていたが、Web API のドキュメント生成に使っている Swashbuckle.AspNetCore がまだ 2.0 に対していないっぽくて一時中断。 ASP.NET Core MVC にはもとから Microsoft.AspNetCore.Mvc.ApiExplor…

ASP.NET Core MVC で JWT を使った認証を実装する

以前、ASP.NET Core MVC で Basic 認証を行う記事を書いた。 tnakamura.hatenablog.com プライベートな Web API なのでこれでいいかなと思っていたが、 大人の事情でそうはいかなくなり、 JWT(Json Web Token) を使った認証に変えることに。 Microsoft.AspNe…

ASP.NET Core MVC で Basic 認証

先日 ASP.NET Core で Basic 認証を行うサンプルを書いた。 tnakamura.hatenablog.com ただ、これだと全てのパスで認証が必要になってしまう。 もともとやりたかったことは、 「ASP.NET Core MVC で Authorized 属性を付けたアクションだけを認証必須にする…

ASP.NET Core で Basic 認証

ASP.NET Core で Basic 認証を行うサンプルを書いてみた。ユーザーは固定なので、本番で使うときは ASP.NET Core Identity みたいに、ユーザー情報をストアから取得するようにしたほうがいいだろうな。 using Microsoft.AspNetCore.Builder; using Microsoft…

ASP.NET Core で Swashbuckle

はじめに Swashbuckle はまだプレリリースの段階ではあるけど、 ASP.NET Core にも対応しているみたい。 github.com Swashbuckle を使えば、Web API の実装から Swagger Definitions を生成できる。 温かみのある手作業で、 Web API の Swagger Definitions …

ASP.NET Core アプリケーションの Docker コンテナを Heroku で動かしてみた

はじめに ASP.NET Core アプリケーションを Docker で動かすことができた。 tnakamura.hatenablog.com そういえば、Heroku で任意の Docker コンテナを動かすことができるようになっていたな。 まだベータ版な上、制限もあるみたいだけど。 もしかしたら ASP…

ASP.NET Core アプリケーションを Docker で動かす

yo aspnet で作成したプロジェクトには Dockerfile が含まれているので、 ASP.NET Core アプリケーションを Docker で動かすこともできる。 ただ、2016/07/25 時点では Dockerfile に手直しが必要。 そのままだと docker build でコケる。 といっても apt-ge…