Oℕ
Олег где-то сравнительно недавно компактно так ругал акторы, сейчас, может, найду, чтобы не писать.
Size: a a a
Oℕ
SK
SK
SK
TT
TT
SK
AJ
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
namespace PRGSERVICES.AUTH.CONNECTOR.Services
{
public class ConnectorService
{
public Task<string> GetToken(User user, ConnectorSettings connectorSettings)
{
// authentication successful so generate jwt token
var tokenHandler = new JwtSecurityTokenHandler();
var signKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(connectorSettings.SignKey));
var creds = new SigningCredentials(signKey, SecurityAlgorithms.HmacSha256);
var encKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(connectorSettings.EncKey));
var encryptingCredentials = new EncryptingCredentials(encKey, JwtConstants.DirectKeyUseAlg, SecurityAlgorithms.Aes128CbcHmacSha256);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim("UserModel", System.Text.Json.JsonSerializer.Serialize(user))
}),
Issuer = $"prg-auth-connector-{connectorSettings.Name}",
Expires = DateTime.UtcNow.AddDays(7),
EncryptingCredentials = encryptingCredentials,
SigningCredentials = creds
};
var token = tokenHandler.CreateToken(tokenDescriptor);
string tokenString = tokenHandler.WriteToken(token);
return Task.FromResult(tokenString);
}
}
}
public class ConnectorSettings
{
public string SignKey { get; set; }
public string EncKey { get; set; }
public string Name { get; set; }
public string AUTH { get; set; }
public bool AlwaysSync { get; set; }
}
//Данную модель пользователя вам необходимо будет заполнять с авторизационного сервера OKTA, и передавать на авторизационный сервер
public class User
{
public Guid ID { get; set; } //** Идентификатор пользователя который не должен меняться, так как по нему система будет понимать этот пользователь уже есть в системе либо создать нового.
public string PN { get; set; } //Phone Number
public string EM { get; set; } //** Email
public string FN { get; set; } //** Full Name
public string PE { get; set; }//PhoneNumberVN
public string MPE { get; set; }//PhoneNumber
public List<TokenGroupDTO> GS { get; set; } //Группы пользователей
}
public class TokenGroupDTO
{
public Guid ID { get; set; }
public string GN { get; set; }
}
AJ
var signKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(connectorSettings.SignKey));
var creds = new SigningCredentials(signKey, SecurityAlgorithms.HmacSha256);
var encKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(connectorSettings.EncKey));
var encryptingCredentials = new EncryptingCredentials(encKey, JwtConstants.DirectKeyUseAlg, SecurityAlgorithms.Aes128CbcHmacSha256);
AD
var signKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(connectorSettings.SignKey));
var creds = new SigningCredentials(signKey, SecurityAlgorithms.HmacSha256);
var encKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(connectorSettings.EncKey));
var encryptingCredentials = new EncryptingCredentials(encKey, JwtConstants.DirectKeyUseAlg, SecurityAlgorithms.Aes128CbcHmacSha256);
AJ
not found: https://repo1.maven.org/maven2/io/github/jmcardon/tsec-mac_2.13/0.0.1-M11/tsec-mac_2.13-0.0.1-M11.pom
GP
not found: https://repo1.maven.org/maven2/io/github/jmcardon/tsec-mac_2.13/0.0.1-M11/tsec-mac_2.13-0.0.1-M11.pom
AJ
not found: https://repo1.maven.org/maven2/io/github/jmcardon/tsec-libsodium_2.13/0.2.1/tsec-libsodium_2.13-0.2.1.pom
GP
not found: https://repo1.maven.org/maven2/io/github/jmcardon/tsec-libsodium_2.13/0.2.1/tsec-libsodium_2.13-0.2.1.pom
GP
GP
GP
AJ