ASP.NET Core - LINEログインに対応する
ASP.NET CoreのWebアプリケーションにLINEログインを組み込むミニマムサンプルです。
LINEログインはOpenID Connectをサポートしているので、OpenID Connect関連の設定を構成していく感じでOKです。
検索して見つかったサンプルは古いものが多かったような気がしたのでこの記事を書いてみました。
LINログインに対応するためにすること
LINEログインに対応するには、次のことを行います。LINE Developersでプロバイダーとチャネルを生成する必要がありますが、この記事では省略しています。
- NuGetで
Microsoft.AspNetCore.Authentication.OpenIdConnect
をインストールする AddOpenIdConnect
メソッドでOpenIdConnectOptions
を構成する
詳細は下記サンプルコードで。
LINEログインに対応したミニマムなサンプル
// Program.cs
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Microsoft.IdentityModel.Tokens;
using System.Security.Claims;
using System.Text;
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
services
.AddAuthentication(options => {
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(options => {
})
.AddOpenIdConnect(options => {
// Developersコンソールで確認できるチャネルIDとチャネルシークレット
options.ClientId = "{チャネルID}";
options.ClientSecret = "{チャネルシークレット}";
// ディスカバリーエンドポイント
options.MetadataAddress = "https://access.line.me/.well-known/openid-configuration";
// response_typeはcode
options.ResponseType = OpenIdConnectResponseType.Code;
// 署名を検証する鍵
// IDトークンは、クライアントシークレットの対称鍵で署名されている様子
options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(options.ClientSecret));
});
services.AddAuthorization();
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/", () => "Hello World!");
app.MapGet("/protected", (ClaimsPrincipal user) => $"Hello {user.Identity?.Name}!")
.RequireAuthorization();
app.Run();
ASP.NET Core 6.0で確認しました。