Lokesh Zende Ответов: 0

IDX10500: проверка подписи не удалась. Не удалось разрешить securitykeyidentifier


Привет,
Я новичок в OAuth и пытаюсь реализовать его в своем приложении.
Я добавил проверяющую сторону, сославшись на [^] эта ссылка.
Как было предложено в ссылке, я не прикрепил никакого сертификата при создании проверяющей стороны.

Теперь в моем приложении этот код перенаправляет меня на страницу входа в AD FS, где пользователь вводит свои учетные данные.
 AuthenticationContext authenticationContext = null;
 Uri redirectUri;
 Uri authorizationRequestURL;
 string clientID = string.Empty;
 string resourceUrl = string.Empty;
 resourceUrl = "https://lxi322.lxi.company.com";

 redirectUri = new Uri("https://lxi322.lxi.company.com/CompanyLogin/SAML/AssertionConsumerService.aspx");

 var config = WebConfigurationManager.OpenWebConfiguration("~/Configuration/web.config");
 clientID = config.AppSettings.Settings["ClientID"].Value;


 authenticationContext = new AuthenticationContext(adfsUrl, false);
 authorizationRequestURL = authenticationContext.GetAuthorizationRequestURL(resourceUrl, clientID, redirectUri, UserIdentifier.AnyUser, null);

Response.Redirect(authorizationRequestURL.AbsoluteUri);



После входа в AD FS я успешно получаю зашифрованный токен JWT, используя приведенный ниже код.
string clientID = config.AppSettings.Settings["ClientID"].Value.ToString();

Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext authenticationContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(
            "https://pw12devadfs.pw12dev.company.com/adfs/oauth2/authorize", false);

ClientCredential credential = new ClientCredential(clientID, "a8cb2a71-da38-4cf4-9023-7799d00e09f8");
AuthenticationResult result = authenticationContext.AcquireTokenByAuthorizationCode(Request.QueryString[0], new Uri("https://lxi322.lxi.company.com/CompanyLogin/SAML/AssertionConsumerService.aspx"), credential);

var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(result.AccessToken) as JwtSecurityToken;


Теперь я пытаюсь проверить тот же токен, используя приведенный ниже код
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
System.IdentityModel.Tokens.SecurityToken securityToken = null;

                var validationParameters = new TokenValidationParameters()
                {
                    ValidAudience = "https://lxi322.lxi.company.com",
                    ValidIssuer = "http://PW12DEVADFS.PW12DEV.company.com",
                    ValidateIssuer = false,
                    ValidateAudience = false
                };

ClaimsPrincipal claims = tokenHandler.ValidateToken(Token, validationParameters, out securityToken);


Но при проверке токена я получаю ошибку как
IDX10500: Signature validation failed. Unable to resolve SecurityKeyIdentifier: 'SecurityKeyIdentifier

(

IsReadOnly = False,

Count = 1,

Clause[0] = X509ThumbprintKeyIdentifierClause(Hash = 0xAE373EDE1C71AB1233A099B1891B3C59C3B825FE)

)
token: '{"typ":"JWT","alg":"RS256","x5t":"rjc-3hxxqxIzoJmxiRs8WcO4Jf4"}.{"aud":"https://lxi322.lxi.company.com","iss":"http://PW12DEVADFS.PW12DEV.company.com/adfs/services/trust","iat":1485938952,"exp":1485942552,"upn":"lokesh@PW12DEV.company.com","email":"lokesh.zende@outlook.com","given_name":"lokesh","auth_time":"2017-02-01T08:49:11.955Z","authmethod":"urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport","ver":"1.0","appid":"a8cb2a71-da38-4cf4-9023-7799d00e09f8"}'.


Что я уже пробовал:

Я погуглил об ошибке. Каждый пост предлагает мне другое решение.

Глядя на исключение, это выглядит как какая-то проблема с сертификатом. Но я нигде не пользовался никаким сертификатом.

0 Ответов