Initial commit
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
using Azure.Core;
|
||||
using SharepointToolbox.Web.Services;
|
||||
|
||||
namespace SharepointToolbox.Web.Infrastructure.Auth;
|
||||
|
||||
/// <summary>
|
||||
/// TokenCredential backed by the circuit's ISessionManager.
|
||||
/// Lets GraphServiceClient call GetTokenAsync transparently using our refresh-token flow.
|
||||
/// </summary>
|
||||
public class SessionTokenCredential : TokenCredential
|
||||
{
|
||||
private readonly ISessionManager _sessionManager;
|
||||
|
||||
public SessionTokenCredential(ISessionManager sessionManager) { _sessionManager = sessionManager; }
|
||||
|
||||
public override async ValueTask<AccessToken> GetTokenAsync(TokenRequestContext requestContext, CancellationToken ct)
|
||||
{
|
||||
var scope = requestContext.Scopes.FirstOrDefault() ?? "https://graph.microsoft.com/.default";
|
||||
var (token, expiresAt) = await _sessionManager.GetAccessTokenWithExpiryAsync(scope, ct);
|
||||
return new AccessToken(token, expiresAt);
|
||||
}
|
||||
|
||||
public override AccessToken GetToken(TokenRequestContext requestContext, CancellationToken ct)
|
||||
=> GetTokenAsync(requestContext, ct).AsTask().GetAwaiter().GetResult();
|
||||
}
|
||||
Reference in New Issue
Block a user