| File: Commands\KeyCommand.cs | Web Access |
| Project: src\aspnetcore\src\Tools\dotnet-user-jwts\src\dotnet-user-jwts.csproj (dotnet-user-jwts) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.CommandLineUtils; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Tools.Internal; namespace Microsoft.AspNetCore.Authentication.JwtBearer.Tools; internal sealed class KeyCommand { public static void Register(ProjectCommandLineApplication app) { app.Command("key", cmd => { cmd.Description = Resources.KeyCommand_Description; var schemeOption = cmd.Option( "--scheme", Resources.KeyCommand_SchemeOption_Description, CommandOptionType.SingleValue); var issuerOption = cmd.Option( "--issuer", Resources.KeyCommand_IssuerOption_Description, CommandOptionType.SingleValue ); var resetOption = cmd.Option( "--reset", Resources.KeyCommand_ResetOption_Description, CommandOptionType.NoValue); var forceOption = cmd.Option( "--force", Resources.KeyCommand_ForceOption_Description, CommandOptionType.NoValue); cmd.HelpOption("-h|--help"); cmd.OnExecute(() => { if (!cmd.TryGetProjectOrFilePath(out var projectPath, out var isFileBasedApp)) { return 1; } return Execute(cmd.Reporter, projectPath, isFileBasedApp, schemeOption.Value() ?? DevJwtsDefaults.Scheme, issuerOption.Value() ?? DevJwtsDefaults.Issuer, resetOption.HasValue(), forceOption.HasValue()); }); }); } private static int Execute(IReporter reporter, string projectPath, bool isFileBasedApp, string scheme, string issuer, bool reset, bool force) { if (!DevJwtCliHelpers.GetProjectAndSecretsId(projectPath, isFileBasedApp, reporter, out var _, out var userSecretsId)) { return 1; } if (reset == true) { if (!force) { reporter.Output(Resources.KeyCommand_Permission); reporter.Error("[Y]es / [N]o"); if (Console.ReadLine().Trim().ToUpperInvariant() != "Y") { reporter.Output(Resources.KeyCommand_Canceled); return 0; } } var key = SigningKeysHandler.CreateSigningKeyMaterial(userSecretsId, scheme, issuer, reset: true); reporter.Output(Resources.FormatKeyCommand_KeyCreated(Convert.ToBase64String(key))); return 0; } var signingKeyMaterial = SigningKeysHandler.GetSigningKeyMaterial(userSecretsId, scheme, issuer); if (signingKeyMaterial is null) { reporter.Output(Resources.KeyCommand_KeyNotFound); return 0; } reporter.Output(Resources.FormatKeyCommand_Confirmed(Convert.ToBase64String(signingKeyMaterial))); return 0; } }