Added cookie/JWT auth config

This commit is contained in:
Daniel J. Summers 2019-06-14 21:07:07 -05:00
parent b379654879
commit f30d484e9c

View File

@ -2,6 +2,8 @@ namespace PrayerTracker
open Microsoft.AspNetCore.Builder open Microsoft.AspNetCore.Builder
open Microsoft.AspNetCore.Hosting open Microsoft.AspNetCore.Hosting
open Microsoft.AspNetCore.Http
open Microsoft.IdentityModel.Tokens
/// Module to hold configuration for the web app /// Module to hold configuration for the web app
[<RequireQualifiedAccess>] [<RequireQualifiedAccess>]
@ -19,6 +21,7 @@ module Configure =
open Microsoft.Extensions.Logging open Microsoft.Extensions.Logging
open Microsoft.Extensions.Options open Microsoft.Extensions.Options
open NodaTime open NodaTime
open System
open System.Globalization open System.Globalization
/// Set up the configuration for the app /// Set up the configuration for the app
@ -51,6 +54,25 @@ module Configure =
.AddSingleton<IClock>(SystemClock.Instance) .AddSingleton<IClock>(SystemClock.Instance)
|> ignore |> ignore
let config = svc.BuildServiceProvider().GetRequiredService<IConfiguration>() let config = svc.BuildServiceProvider().GetRequiredService<IConfiguration>()
let authConfig = config.GetSection "Tokens"
svc.AddAuthentication()
.AddCookie(
fun opts ->
opts.Cookie.Name <- "PrayerTrackerAuth"
opts.Cookie.HttpOnly <- false
opts.Cookie.SameSite <- SameSiteMode.Strict
opts.SlidingExpiration <- true
opts.ClaimsIssuer <- authConfig.["Issuer"])
.AddJwtBearer(
fun opts ->
opts.SaveToken <- true
opts.ClaimsIssuer <- "PrayerTracker"
opts.TokenValidationParameters <- TokenValidationParameters ()
opts.TokenValidationParameters.ValidIssuer <- authConfig.["Issuer"]
opts.TokenValidationParameters.ValidAudience <- authConfig.["Issuer"]
opts.TokenValidationParameters.IssuerSigningKey <- SymmetricSecurityKey (Convert.FromBase64String authConfig.["Key"]))
|> ignore
let config = svc.BuildServiceProvider().GetRequiredService<IConfiguration>()
let crypto = config.GetSection "CookieCrypto" let crypto = config.GetSection "CookieCrypto"
CookieCrypto (crypto.["Key"], crypto.["IV"]) |> setCrypto CookieCrypto (crypto.["Key"], crypto.["IV"]) |> setCrypto
svc.AddDbContext<AppDbContext>( svc.AddDbContext<AppDbContext>(
@ -173,6 +195,7 @@ module Configure =
.UseStaticFiles() .UseStaticFiles()
.UseSession() .UseSession()
.UseRequestLocalization(app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value) .UseRequestLocalization(app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value)
.UseAuthentication()
.UseGiraffe(webApp) .UseGiraffe(webApp)
|> ignore |> ignore
Views.I18N.setUpFactories <| app.ApplicationServices.GetRequiredService<IStringLocalizerFactory> () Views.I18N.setUpFactories <| app.ApplicationServices.GetRequiredService<IStringLocalizerFactory> ()