Я новичок в этом форуме и ожидаю большой помощи от экспертов, у нас есть проект, в котором аутентификация OWIN реализована в C#, и у нас есть внутренний инструмент для пользовательского интерфейса (на старом языке angular, javascript), кажется, много fl aws, ниже приведены некоторые проблемы.
Если токен доступа истек и есть вызов для доступа к защищенному ресурсу, здесь вызов выигран не завершено, так как мы можем сделать этот вызов завершенным после генерации нового токена доступа с использованием токена refre sh, это нужно обрабатывать в пользовательском интерфейсе или на стороне службы, любые указатели кода?
Рекомендуется ли создавать токен доступа с помощью refre sh токена до истечения интервала истечения срока действия токена доступа в пользовательском интерфейсе?
API также используются службой windows, поэтому, если срок действия токена истекает и сервис ударит любой API с токеном с истекшим сроком действия, который он выбрасывает неавторизованным, однако тот же вопрос, как создать токен на лету и завершить этот вызов.
Любая помощь в этом, Буду очень признателен, так что, ожидая ваших ответов, пример кода показан ниже.
public class SimpleRefreshTokenProvider : IAuthenticationTokenProvider
{
private static ConcurrentDictionary<string, AuthenticationTicket> _refreshTokens = new ConcurrentDictionary<string, AuthenticationTicket>();
public async Task CreateAsync(AuthenticationTokenCreateContext context)
{
var guid = Guid.NewGuid().ToString();
_refreshTokens.TryAdd(guid, context.Ticket);
// hash??
context.SetToken(guid);
}
public async Task ReceiveAsync(AuthenticationTokenReceiveContext context)
{
AuthenticationTicket ticket;
if (_refreshTokens.TryRemove(context.Token, out ticket))
{
context.SetTicket(ticket);
}
}
public void Create(AuthenticationTokenCreateContext context)
{
throw new NotImplementedException();
}
public void Receive(AuthenticationTokenReceiveContext context)
{
throw new NotImplementedException();
}
}
// Now in my Startup.Auth.cs
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/api/token"),
Provider = new ApplicationOAuthProvider(PublicClientId,UserManagerFactory) ,
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(2),
AllowInsecureHttp = true,
RefreshTokenProvider = new RefreshTokenProvider() // This is my test
};