Skip to content
This repository was archived by the owner on Apr 10, 2025. It is now read-only.

Commit 012c82d

Browse files
committed
adds more activities
1 parent fcdbc87 commit 012c82d

File tree

6 files changed

+42
-22
lines changed

6 files changed

+42
-22
lines changed

src/Solid.Identity.Protocols.Saml2p/Extensions/HttpContextExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public static class HttpContextExtensions
3030
/// <returns>An awaitable <see cref="Task"/>.</returns>
3131
public static Task StartSsoAsync(this HttpContext context, string partnerId)
3232
{
33-
using var activity = Saml2pConstants.Tracing.Saml2p.StartActivity(nameof(StartSsoAsync));
33+
using var activity = Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(HttpContext)}.{nameof(StartSsoAsync)}");
3434
var middleware = context.RequestServices.GetRequiredService<StartSsoEndpointMiddleware>();
3535
return middleware.StartSsoAsync(context, partnerId);
3636
}
@@ -42,7 +42,7 @@ public static Task StartSsoAsync(this HttpContext context, string partnerId)
4242
/// <returns>An awaitable <see cref="Task{T}"/> of type <see cref="FinishSsoResult"/>.</returns>
4343
public static async Task<FinishSsoResult> FinishSsoAsync(this HttpContext context)
4444
{
45-
using var activity = Saml2pConstants.Tracing.Saml2p.StartActivity(nameof(FinishSsoAsync));
45+
using var activity = Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(HttpContext)}.{nameof(FinishSsoAsync)}");
4646
var middleware = context.RequestServices.GetRequiredService<FinishSsoEndpointMiddleware>();
4747
return await middleware.FinishSsoAsync(context);
4848
}

src/Solid.Identity.Protocols.Saml2p/Middleware/Idp/AcceptSsoEndpointMiddleware.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ private async Task AcceptSsoAsync(HttpContext context)
6767
ReturnUrl = GenerateReturnUrl(context, request.Id)
6868
};
6969

70-
await Events.InvokeAsync(Options, partner, e => e.OnAcceptSso(context.RequestServices, ssoContext));
70+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pIdentityProviderEvents)}.{nameof(Saml2pIdentityProviderEvents.OnAcceptSso)}"))
71+
await Events.InvokeAsync(Options, partner, e => e.OnAcceptSso(context.RequestServices, ssoContext));
7172

7273
if (!IsValid(ssoContext, out var status, out var subStatus) && status.HasValue)
7374
{
@@ -84,6 +85,7 @@ private async Task AcceptSsoAsync(HttpContext context)
8485
// TODO: extract this to a validator class and test it
8586
private bool IsValid(AcceptSsoContext context, out SamlResponseStatus? status, out SamlResponseStatus? subStatus)
8687
{
88+
using var activity = StartActivity(nameof(IsValid));
8789
if(context.Request.Version != Saml2Constants.Version)
8890
{
8991
status = SamlResponseStatus.VersionMismatch;

src/Solid.Identity.Protocols.Saml2p/Middleware/Idp/CompleteSsoEndpointMiddleware.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,16 @@ private async Task CompleteSsoAsync(HttpContext context)
9797
TokenDescriptor = descriptor,
9898
Handler = _handler
9999
};
100+
101+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pIdentityProviderEvents)}.{nameof(Saml2pIdentityProviderEvents.OnCreatingSecurityToken)}"))
102+
await Events.InvokeAsync(Options, partner, e => e.OnCreatingSecurityToken(context.RequestServices, createSecurityTokenContext));
100103

101-
await Events.InvokeAsync(Options, partner, e => e.OnCreatingSecurityToken(context.RequestServices, createSecurityTokenContext));
102-
103-
createSecurityTokenContext.SecurityToken ??=
104-
createSecurityTokenContext.Handler.CreateToken(createSecurityTokenContext.TokenDescriptor) as Saml2SecurityToken;
105-
106-
await Events.InvokeAsync(Options, partner, e => e.OnCreatedSecurityToken(context.RequestServices, createSecurityTokenContext));
104+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2SecurityTokenHandler)}.{nameof(Saml2SecurityTokenHandler.CreateToken)}"))
105+
createSecurityTokenContext.SecurityToken ??=
106+
createSecurityTokenContext.Handler.CreateToken(createSecurityTokenContext.TokenDescriptor) as Saml2SecurityToken;
107+
108+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pIdentityProviderEvents)}.{nameof(Saml2pIdentityProviderEvents.OnCreatedSecurityToken)}"))
109+
await Events.InvokeAsync(Options, partner, e => e.OnCreatedSecurityToken(context.RequestServices, createSecurityTokenContext));
107110

108111
response = _responseFactory.Create(partner, authnRequestId: request.Id, relayState: request.RelayState, token: createSecurityTokenContext.SecurityToken);
109112
}
@@ -119,7 +122,9 @@ private async Task CompleteSsoAsync(HttpContext context)
119122
Request = request,
120123
Response = response
121124
};
122-
await Events.InvokeAsync(Options, partner, e => e.OnCompleteSso(context.RequestServices, completeSsoContext));
125+
126+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pIdentityProviderEvents)}.{nameof(Saml2pIdentityProviderEvents.OnCompleteSso)}"))
127+
await Events.InvokeAsync(Options, partner, e => e.OnCompleteSso(context.RequestServices, completeSsoContext));
123128

124129
var binding = Convert(request.ProtocolBinding) ?? partner.SupportedBindings.First();
125130
Trace($"Sending SAMLResponse using {binding} binding.", response);

src/Solid.Identity.Protocols.Saml2p/Middleware/Idp/InitiateSsoEndpointMiddleware.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ private async Task InnitiateSsoAsync(HttpContext context)
7171
ReturnUrl = GenerateReturnUrl(context, key)
7272
};
7373

74-
await Events.InvokeAsync(Options, partner, e => e.OnInitiateSso(context.RequestServices, ssoContext));
74+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pIdentityProviderEvents)}.{nameof(Saml2pIdentityProviderEvents.OnInitiateSso)}"))
75+
await Events.InvokeAsync(Options, partner, e => e.OnInitiateSso(context.RequestServices, ssoContext));
7576

7677
if (ssoContext.AuthenticationScheme != null)
7778
await ChallengeAsync(context, request, ssoContext.ReturnUrl, ssoContext.AuthenticationPropertyItems, ssoContext.AuthenticationScheme);

src/Solid.Identity.Protocols.Saml2p/Middleware/Sp/FinishSsoEndpointMiddleware.cs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,8 @@ public async Task<FinishSsoResult> FinishSsoAsync(HttpContext context)
170170
Response = response
171171
};
172172

173-
await Events.InvokeAsync(Options, partner, e => e.OnFinishSso(context.RequestServices, ssoContext));
173+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pServiceProviderEvents)}.{nameof(Saml2pServiceProviderEvents.OnFinishSso)}"))
174+
await Events.InvokeAsync(Options, partner, e => e.OnFinishSso(context.RequestServices, ssoContext));
174175

175176
if (response.Status.StatusCode.Value != Saml2pConstants.Statuses.Success)
176177
{
@@ -186,7 +187,9 @@ public async Task<FinishSsoResult> FinishSsoAsync(HttpContext context)
186187
TokenValidationParameters = parameters,
187188
Handler = _handler
188189
};
189-
await Events.InvokeAsync(Options, partner, e => e.OnValidatingToken(context.RequestServices, validateContext));
190+
191+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pServiceProviderEvents)}.{nameof(Saml2pServiceProviderEvents.OnValidatingToken)}"))
192+
await Events.InvokeAsync(Options, partner, e => e.OnValidatingToken(context.RequestServices, validateContext));
190193

191194
if (validateContext.Subject != null && validateContext.SecurityToken == null ||
192195
validateContext.Subject == null && validateContext.SecurityToken != null)
@@ -198,18 +201,23 @@ public async Task<FinishSsoResult> FinishSsoAsync(HttpContext context)
198201

199202
if (validateContext.Subject == null)
200203
{
201-
Logger.LogInformation("Validating incoming token.");
202-
var subject = validateContext.Handler.ValidateToken(validateContext.Response.XmlSecurityToken, validateContext.TokenValidationParameters, out var token);
203-
var saml2 = token as Saml2SecurityToken;
204-
var now = GetUtcNow();
204+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2SecurityTokenHandler)}.{nameof(Saml2SecurityTokenHandler.ValidateToken)}"))
205+
{
206+
Logger.LogInformation("Validating incoming token.");
207+
var subject = validateContext.Handler.ValidateToken(validateContext.Response.XmlSecurityToken,
208+
validateContext.TokenValidationParameters, out var token);
209+
var saml2 = token as Saml2SecurityToken;
210+
var now = GetUtcNow();
205211

206-
saml2.ValidateResponseToken(validateContext.Request?.Id, now);
212+
saml2.ValidateResponseToken(validateContext.Request?.Id, now);
207213

208-
validateContext.Subject = subject;
209-
validateContext.SecurityToken = saml2;
214+
validateContext.Subject = subject;
215+
validateContext.SecurityToken = saml2;
216+
}
210217
}
211218

212-
await Events.InvokeAsync(Options, partner, e => e.OnValidatedToken(context.RequestServices, validateContext));
219+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pServiceProviderEvents)}.{nameof(Saml2pServiceProviderEvents.OnValidatedToken)}"))
220+
await Events.InvokeAsync(Options, partner, e => e.OnValidatedToken(context.RequestServices, validateContext));
213221

214222
context.User = validateContext.Subject;
215223

src/Solid.Identity.Protocols.Saml2p/Middleware/Sp/StartSsoEndpointMiddleware.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ internal async Task StartSsoAsync(HttpContext context, string partnerId)
8787
Partner = partner,
8888
Request = request
8989
};
90-
await Events.InvokeAsync(Options, partner, e => e.OnStartSso(context.RequestServices, ssoContext));
90+
91+
using (Saml2pConstants.Tracing.Saml2p.StartActivity($"{nameof(Saml2pServiceProviderEvents)}.{nameof(Saml2pServiceProviderEvents.OnStartSso)}"))
92+
await Events.InvokeAsync(Options, partner, e => e.OnStartSso(context.RequestServices, ssoContext));
9193

9294
if (!partner.SupportedBindings.Any())
9395
throw new InvalidOperationException($"Partner '{partner.Id}' has no supported bindings.");
@@ -111,6 +113,7 @@ private Task StartSsoAsync(HttpContext context, AuthnRequest request, Uri destin
111113

112114
private Task RedirectAsync(HttpContext context, string base64, Uri destination, string relayState)
113115
{
116+
using var activity = StartActivity(nameof(RedirectAsync));
114117
var queryBuilder = new StringBuilder();
115118
if (string.IsNullOrEmpty(destination.Query))
116119
queryBuilder.Append("?");
@@ -133,6 +136,7 @@ private Task RedirectAsync(HttpContext context, string base64, Uri destination,
133136

134137
private async Task PostAsync(HttpContext context, string base64, Uri destination, string relayState)
135138
{
139+
using var activity = StartActivity(nameof(PostAsync));
136140
var model = new AuthnRequestModel
137141
{
138142
Destination = destination,

0 commit comments

Comments
 (0)