Implementiere eine Signaturverifizierung in den EnvelopeController.Update (api/envelope/{envelopeKey}) und DocumentController.Open (api/document/{envelopeKey}) Methoden, die beide mit dem HTTPPost-Attribut gekennzeichnet sind. Diese Prüfung stellt sicher, dass nur der authentifizierte Empfänger mit einer übereinstimmenden Signatur Zugriff auf die spezifizierten Ressourcen hat oder diese ändern kann. Dies erhöht die Sicherheit, indem unautorisierten Zugriff verhindert wird.
43 lines
1.7 KiB
C#
43 lines
1.7 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using System.Security.Claims;
|
|
|
|
namespace EnvelopeGenerator.Web.Controllers
|
|
{
|
|
public static class ControllerBaseExtensions
|
|
{
|
|
public static (string EnvelopeUuid, string ReceiverSignature)? GetAuthenticatedEnvelopeDetails(this ControllerBase controller)
|
|
{
|
|
if(controller?.User?.Identity?.IsAuthenticated ?? false)
|
|
{
|
|
var envelopeUuid = controller.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
|
|
var receiverSignature = controller.User.FindFirst(ClaimTypes.Hash)?.Value;
|
|
if (!string.IsNullOrEmpty(envelopeUuid) && !string.IsNullOrEmpty(receiverSignature))
|
|
return (EnvelopeUuid: envelopeUuid, ReceiverSignature: receiverSignature);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static string? GetAuthenticatedEnvelopeUuid(this ControllerBase controller)
|
|
{
|
|
if (controller?.User?.Identity?.IsAuthenticated ?? false)
|
|
{
|
|
var envelopeUuid = controller.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
|
|
if (!string.IsNullOrEmpty(envelopeUuid))
|
|
return envelopeUuid;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static string? GetAuthenticatedReceiverSignature(this ControllerBase controller)
|
|
{
|
|
if (controller?.User?.Identity?.IsAuthenticated ?? false)
|
|
{
|
|
var receiverSignature = controller.User.FindFirst(ClaimTypes.Hash)?.Value;
|
|
if (!string.IsNullOrEmpty(receiverSignature))
|
|
return receiverSignature;
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
}
|