63 lines
1.9 KiB
C#
63 lines
1.9 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Xml.Linq;
|
|
|
|
namespace Microsoft.AspNetCore.Authentication
|
|
{
|
|
public class Transaction
|
|
{
|
|
public HttpRequestMessage Request { get; set; }
|
|
public HttpResponseMessage Response { get; set; }
|
|
|
|
public IList<string> SetCookie { get; set; }
|
|
|
|
public string ResponseText { get; set; }
|
|
public XElement ResponseElement { get; set; }
|
|
|
|
public string AuthenticationCookieValue
|
|
{
|
|
get
|
|
{
|
|
if (SetCookie != null && SetCookie.Count > 0)
|
|
{
|
|
var authCookie = SetCookie.SingleOrDefault(c => c.Contains(".AspNetCore." + TestExtensions.CookieAuthenticationScheme + "="));
|
|
if (authCookie != null)
|
|
{
|
|
return authCookie.Substring(0, authCookie.IndexOf(';'));
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public string FindClaimValue(string claimType, string issuer = null)
|
|
{
|
|
var claim = ResponseElement.Elements("claim")
|
|
.SingleOrDefault(elt => elt.Attribute("type").Value == claimType &&
|
|
(issuer == null || elt.Attribute("issuer").Value == issuer));
|
|
if (claim == null)
|
|
{
|
|
return null;
|
|
}
|
|
return claim.Attribute("value").Value;
|
|
}
|
|
|
|
public string FindTokenValue(string name)
|
|
{
|
|
var claim = ResponseElement.Elements("token")
|
|
.SingleOrDefault(elt => elt.Attribute("name").Value == name);
|
|
if (claim == null)
|
|
{
|
|
return null;
|
|
}
|
|
return claim.Attribute("value").Value;
|
|
}
|
|
|
|
}
|
|
}
|