本文整理汇总了C#中KentorAuthServicesAuthenticationMiddleware类的典型用法代码示例。如果您正苦于以下问题:C# KentorAuthServicesAuthenticationMiddleware类的具体用法?C# KentorAuthServicesAuthenticationMiddleware怎么用?C# KentorAuthServicesAuthenticationMiddleware使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
KentorAuthServicesAuthenticationMiddleware类属于命名空间,在下文中一共展示了KentorAuthServicesAuthenticationMiddleware类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: KentorAuthServicesAuthenticationMiddleware_CtorSetsDefaultAuthOption
public void KentorAuthServicesAuthenticationMiddleware_CtorSetsDefaultAuthOption()
{
var options = new KentorAuthServicesAuthenticationOptions(true);
options.SignInAsAuthenticationType.Should().BeNull();
var middleware = new KentorAuthServicesAuthenticationMiddleware(new StubOwinMiddleware(0, null),
CreateAppBuilder(), options);
options.SignInAsAuthenticationType.Should().Be(DefaultSignInAsAuthenticationType);
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:11,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例2: KentorAuthServicesAuthenticationMiddleware_RedirectsOnAuthChallenge
public async Task KentorAuthServicesAuthenticationMiddleware_RedirectsOnAuthChallenge()
{
var middleware = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(401, new AuthenticationResponseChallenge(
new string[] { "KentorAuthServices" }, null)), CreateAppBuilder(),
new KentorAuthServicesAuthenticationOptions(true));
var context = OwinTestHelpers.CreateOwinContext();
await middleware.Invoke(context);
context.Response.StatusCode.Should().Be(303);
context.Response.Headers["Location"].Should().StartWith("https://idp.example.com/idp");
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:14,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例3: KentorAuthServicesAuthenticationOptions
public async Task KentorAuthServicesAuthenticationMiddleware_DoesntRedirectOnUnspecifiedAuthRevoke_WhenPassiveAndStrictCompatibility()
{
var options = new KentorAuthServicesAuthenticationOptions(true)
{
AuthenticationMode = AuthenticationMode.Passive,
};
options.SPOptions.Compatibility.StrictOwinAuthenticationMode = true;
var subject = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(200, revoke: new AuthenticationResponseRevoke(new string[0])),
CreateAppBuilder(),
options);
var context = OwinTestHelpers.CreateOwinContext();
Thread.CurrentPrincipal = new ClaimsPrincipal(
new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.NameIdentifier, "NameId", null, "https://idp.example.com"),
new Claim(AuthServicesClaimTypes.SessionIndex, "SessionId", null, "https://idp.example.com")
}, "Federation"));
await subject.Invoke(context);
context.Response.StatusCode.Should().Be(200);
}
开发者ID:woric,项目名称:authservices,代码行数:26,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例4: KentorAuthServicesAuthenticationMiddleware_WorksOnNullDiscoveryResponseUrl
public void KentorAuthServicesAuthenticationMiddleware_WorksOnNullDiscoveryResponseUrl()
{
var context = OwinTestHelpers.CreateOwinContext();
var middleware = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(200, null),
CreateAppBuilder(),
new KentorAuthServicesAuthenticationOptions(false)
{
SPOptions = new SPOptions()
{
EntityId = new EntityId("http://localhost/metadata")
}
});
Func<Task> f = async () => await middleware.Invoke(context);
f.ShouldNotThrow();
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:19,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例5: KentorAuthServicesAuthenticationMiddleware_MetadataWorks
public async Task KentorAuthServicesAuthenticationMiddleware_MetadataWorks()
{
var context = OwinTestHelpers.CreateOwinContext();
context.Request.Host = new HostString("localhost");
context.Request.Path = new PathString("/AuthServices");
var middleware = new KentorAuthServicesAuthenticationMiddleware(
null,
CreateAppBuilder(),
new KentorAuthServicesAuthenticationOptions(true));
await middleware.Invoke(context);
context.Response.Body.Seek(0, SeekOrigin.Begin);
context.Response.ContentType.Should().Contain("application/samlmetadata+xml");
var xmlData = XDocument.Load(context.Response.Body);
xmlData.Document.Root.Name.Should().Be(Saml2Namespaces.Saml2Metadata + "EntityDescriptor");
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:20,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例6: KentorAuthServicesAuthenticationMiddleware_UsesCommandResultLocation
public async Task KentorAuthServicesAuthenticationMiddleware_UsesCommandResultLocation()
{
// For Owin middleware, the redirect uri is part of the
// authentication properties, but we don't want to use it as it
// is because it can be empty (e.g. on unsolicited responses
// or until #182 is fixed). The redirect uri should be taken
// from the commandresult location instead.
var context = OwinTestHelpers.CreateOwinContext();
context.Request.Method = "POST";
var response =
@"<saml2p:Response xmlns:saml2p=""urn:oasis:names:tc:SAML:2.0:protocol""
xmlns:saml2=""urn:oasis:names:tc:SAML:2.0:assertion""
ID = """ + MethodBase.GetCurrentMethod().Name + @""" Version=""2.0""
IssueInstant=""2013-01-01T00:00:00Z"">
<saml2:Issuer>
https://idp.example.com
</saml2:Issuer>
<saml2p:Status>
<saml2p:StatusCode Value=""urn:oasis:names:tc:SAML:2.0:status:Success"" />
</saml2p:Status>
<saml2:Assertion
Version=""2.0"" ID=""" + MethodBase.GetCurrentMethod().Name + @"_Assertion1""
IssueInstant=""2013-09-25T00:00:00Z"">
<saml2:Issuer>https://idp.example.com</saml2:Issuer>
<saml2:Subject>
<saml2:NameID>SomeUser</saml2:NameID>
<saml2:SubjectConfirmation Method=""urn:oasis:names:tc:SAML:2.0:cm:bearer"" />
</saml2:Subject>
<saml2:Conditions NotOnOrAfter=""2100-01-01T00:00:00Z"" />
</saml2:Assertion>
</saml2p:Response>";
var bodyData = new KeyValuePair<string, string>[] {
new KeyValuePair<string, string>("SAMLResponse",
Convert.ToBase64String(Encoding.UTF8.GetBytes(SignedXmlHelper.SignXml(response))))
};
var encodedBodyData = new FormUrlEncodedContent(bodyData);
context.Request.Body = encodedBodyData.ReadAsStreamAsync().Result;
context.Request.ContentType = encodedBodyData.Headers.ContentType.ToString();
context.Request.Host = new HostString("localhost");
context.Request.Path = new PathString("/AuthServices/Acs");
var middleware = new KentorAuthServicesAuthenticationMiddleware(null, CreateAppBuilder(),
new KentorAuthServicesAuthenticationOptions(true)
{
SignInAsAuthenticationType = "AuthType"
});
await middleware.Invoke(context);
context.Response.StatusCode.Should().Be(302);
context.Response.Headers["Location"].Should().Be("http://localhost/LoggedIn");
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:57,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例7: KentorAuthServicesAuthenticationMiddleware_RedirectRemembersReturnPath
public async Task KentorAuthServicesAuthenticationMiddleware_RedirectRemembersReturnPath()
{
var returnUrl = "http://sp.example.com/returnurl";
var middleware = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(401, new AuthenticationResponseChallenge(
new string[] { "KentorAuthServices" }, new AuthenticationProperties()
{
RedirectUri = returnUrl
})),
CreateAppBuilder(), new KentorAuthServicesAuthenticationOptions(true));
var context = OwinTestHelpers.CreateOwinContext();
await middleware.Invoke(context);
StoredRequestState storedAuthnData;
PendingAuthnRequests.TryRemove(ExtractRelayState(context), out storedAuthnData);
storedAuthnData.ReturnUrl.Should().Be(returnUrl);
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:21,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例8: KentorAuthServicesAuthenticationMiddleware_NoRedirectWithoutChallenge
public async Task KentorAuthServicesAuthenticationMiddleware_NoRedirectWithoutChallenge()
{
var middleware = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(401, null), CreateAppBuilder(),
new KentorAuthServicesAuthenticationOptions(true));
var context = OwinTestHelpers.CreateOwinContext();
await middleware.Invoke(context);
context.Response.StatusCode.Should().Be(401);
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:12,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例9: KentorAuthServicesAuthenticationMiddleware_RedirectoToSecondIdp_AuthenticationProperties
public async Task KentorAuthServicesAuthenticationMiddleware_RedirectoToSecondIdp_AuthenticationProperties()
{
var secondIdp = IdentityProvider.ActiveIdentityProviders.Skip(1).First();
var secondDestination = secondIdp.AssertionConsumerServiceUrl;
var secondEntityId = secondIdp.EntityId;
var middleware = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(401, new AuthenticationResponseChallenge(
new string[] { "KentorAuthServices" }, new AuthenticationProperties(
new Dictionary<string, string>()
{
{ "idp", secondEntityId.Id }
}))),
CreateAppBuilder(), new KentorAuthServicesAuthenticationOptions());
var context = OwinTestHelpers.CreateOwinContext();
await middleware.Invoke(context);
context.Response.StatusCode.Should().Be(302);
context.Response.Headers["Location"].Should().StartWith(secondDestination.ToString());
}
开发者ID:dmarlow,项目名称:authservices,代码行数:21,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例10: KentorAuthServicesAuthenticationMiddleware_AcsWorks
public async Task KentorAuthServicesAuthenticationMiddleware_AcsWorks()
{
var context = OwinTestHelpers.CreateOwinContext();
context.Request.Method = "POST";
var authProps = new AuthenticationProperties()
{
IssuedUtc = new DateTime(1975, 05, 05, 05, 05, 05, DateTimeKind.Utc)
};
authProps.Dictionary["Test"] = "TestValue";
var state = new StoredRequestState(new EntityId("https://idp.example.com"),
new Uri("http://localhost/LoggedIn"),
new Saml2Id("InResponseToId"),
authProps.Dictionary);
var relayState = SecureKeyGenerator.CreateRelayState();
var cookieData = HttpRequestData.ConvertBinaryData(
CreateAppBuilder().CreateDataProtector(
typeof(KentorAuthServicesAuthenticationMiddleware).FullName)
.Protect(state.Serialize()));
context.Request.Headers["Cookie"] = $"Kentor.{relayState}={cookieData}";
var response =
@"<saml2p:Response xmlns:saml2p=""urn:oasis:names:tc:SAML:2.0:protocol""
xmlns:saml2=""urn:oasis:names:tc:SAML:2.0:assertion""
ID = """ + MethodBase.GetCurrentMethod().Name + @""" Version=""2.0""
IssueInstant=""2013-01-01T00:00:00Z"" InResponseTo=""InResponseToId"" >
<saml2:Issuer>
https://idp.example.com
</saml2:Issuer>
<saml2p:Status>
<saml2p:StatusCode Value=""urn:oasis:names:tc:SAML:2.0:status:Success"" />
</saml2p:Status>
<saml2:Assertion
Version=""2.0"" ID=""" + MethodBase.GetCurrentMethod().Name + @"_Assertion1""
IssueInstant=""2013-09-25T00:00:00Z"">
<saml2:Issuer>https://idp.example.com</saml2:Issuer>
<saml2:Subject>
<saml2:NameID>SomeUser</saml2:NameID>
<saml2:SubjectConfirmation Method=""urn:oasis:names:tc:SAML:2.0:cm:bearer"" />
</saml2:Subject>
<saml2:Conditions NotOnOrAfter=""2100-01-01T00:00:00Z"" />
</saml2:Assertion>
</saml2p:Response>";
var bodyData = new KeyValuePair<string, string>[] {
new KeyValuePair<string, string>("SAMLResponse",
Convert.ToBase64String(Encoding.UTF8.GetBytes(SignedXmlHelper.SignXml(response)))),
new KeyValuePair<string, string>("RelayState",relayState)
};
var encodedBodyData = new FormUrlEncodedContent(bodyData);
context.Request.Body = encodedBodyData.ReadAsStreamAsync().Result;
context.Request.ContentType = encodedBodyData.Headers.ContentType.ToString();
context.Request.Host = new HostString("localhost");
context.Request.Path = new PathString("/AuthServices/Acs");
var signInAsAuthenticationType = "AuthType";
var ids = new ClaimsIdentity[] { new ClaimsIdentity(signInAsAuthenticationType),
new ClaimsIdentity(signInAsAuthenticationType) };
ids[0].AddClaim(new Claim(ClaimTypes.NameIdentifier, "SomeUser", null, "https://idp.example.com"));
ids[1].AddClaim(new Claim(ClaimTypes.Role, "RoleFromClaimsAuthManager",
null, "ClaimsAuthenticationManagerStub"));
var subject = new KentorAuthServicesAuthenticationMiddleware(null, CreateAppBuilder(),
StubFactory.CreateOwinOptions());
await subject.Invoke(context);
context.Response.StatusCode.Should().Be(303);
context.Response.Headers["Location"].Should().Be("http://localhost/LoggedIn");
context.Response.Headers["Set-Cookie"].Should().Be($"Kentor.{relayState}=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT");
context.Authentication.AuthenticationResponseGrant.Principal.Identities
.ShouldBeEquivalentTo(ids, opt => opt.IgnoringCyclicReferences());
context.Authentication.AuthenticationResponseGrant.Properties.RedirectUri
.Should().Be("http://localhost/LoggedIn",
"the StoredRequestState.ReturnUrl should overtake the value in the AuthProperties and be stored in the AuthProps");
context.Authentication.AuthenticationResponseGrant.Properties.Dictionary["Test"]
.Should().Be("TestValue");
context.Authentication.AuthenticationResponseGrant.Properties.IssuedUtc
.Should().Be(authProps.IssuedUtc);
}
开发者ID:baguit,项目名称:authservices,代码行数:90,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例11: KentorAuthServicesAuthenticationMiddleware_RedirectRemembersReturnPath
public async Task KentorAuthServicesAuthenticationMiddleware_RedirectRemembersReturnPath()
{
var returnUrl = "http://sp.example.com/returnurl";
var options = new KentorAuthServicesAuthenticationOptions(true);
var subject = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(401, new AuthenticationResponseChallenge(
new string[] { "KentorAuthServices" }, new AuthenticationProperties()
{
RedirectUri = returnUrl
})),
CreateAppBuilder(), options);
var context = OwinTestHelpers.CreateOwinContext();
await subject.Invoke(context);
var storedState = ExtractRequestState(options.DataProtector, context);
storedState.ReturnUrl.Should().Be(returnUrl);
}
开发者ID:baguit,项目名称:authservices,代码行数:21,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例12: KentorAuthServicesAuthenticationMiddleware_CreatesRedirectOnAuthRevoke
public async Task KentorAuthServicesAuthenticationMiddleware_CreatesRedirectOnAuthRevoke()
{
var revoke = new AuthenticationResponseRevoke(new string[0]);
var options = new KentorAuthServicesAuthenticationOptions(true);
((SPOptions)options.SPOptions).PublicOrigin = new Uri("https://sp.example.com/ExternalPath/");
var subject = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(200, revoke: revoke),
CreateAppBuilder(),
options);
var context = OwinTestHelpers.CreateOwinContext();
context.Request.Scheme = "http";
context.Request.Host = new HostString("sp-internal.example.com");
context.Request.PathBase = new PathString("/InternalPath");
context.Request.Path = new PathString("/LoggedOut");
Thread.CurrentPrincipal = new ClaimsPrincipal(
new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.NameIdentifier, "NameId", null, "https://idp.example.com"),
new Claim(AuthServicesClaimTypes.SessionIndex, "SessionId", null, "https://idp.example.com")
}, "Federation"));
await subject.Invoke(context);
context.Response.StatusCode.Should().Be(303);
context.Response.Headers["Location"].Should().StartWith("https://idp.example.com/logout?SAMLRequest");
var returnUrl = ExtractRequestState(options.DataProtector, context).ReturnUrl;
returnUrl.Should().Be("https://sp.example.com/ExternalPath/LoggedOut");
}
开发者ID:baguit,项目名称:authservices,代码行数:33,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例13: KentorAuthServicesAuthenticationMiddleware_Acs_HonorsSessionNotOnOrAfter
public async Task KentorAuthServicesAuthenticationMiddleware_Acs_HonorsSessionNotOnOrAfter()
{
var context = OwinTestHelpers.CreateOwinContext();
context.Request.Method = "POST";
var response =
@"<saml2p:Response xmlns:saml2p=""urn:oasis:names:tc:SAML:2.0:protocol""
xmlns:saml2=""urn:oasis:names:tc:SAML:2.0:assertion""
ID = """ + MethodBase.GetCurrentMethod().Name + @""" Version=""2.0""
IssueInstant=""2013-01-01T00:00:00Z"">
<saml2:Issuer>
https://idp.example.com
</saml2:Issuer>
<saml2p:Status>
<saml2p:StatusCode Value=""urn:oasis:names:tc:SAML:2.0:status:Success"" />
</saml2p:Status>
<saml2:Assertion
Version=""2.0"" ID=""" + MethodBase.GetCurrentMethod().Name + [email protected]"_Assertion1""
IssueInstant=""2013-09-25T00:00:00Z"">
<saml2:Issuer>https://idp.example.com</saml2:Issuer>
<saml2:Subject>
<saml2:NameID>SomeUser</saml2:NameID>
<saml2:SubjectConfirmation Method=""urn:oasis:names:tc:SAML:2.0:cm:bearer"" />
</saml2:Subject>
<saml2:Conditions NotOnOrAfter=""2100-01-01T00:00:00Z"" />
<saml2:AuthnStatement AuthnInstant=""{DateTime.UtcNow.ToSaml2DateTimeString()}"" SessionNotOnOrAfter=""2050-01-01T00:00:00Z"">
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef>
</saml2:AuthnContext>
</saml2:AuthnStatement>
</saml2:Assertion>
</saml2p:Response>";
var bodyData = new KeyValuePair<string, string>[] {
new KeyValuePair<string, string>("SAMLResponse",
Convert.ToBase64String(Encoding.UTF8.GetBytes(SignedXmlHelper.SignXml(response)))),
};
var encodedBodyData = new FormUrlEncodedContent(bodyData);
context.Request.Body = encodedBodyData.ReadAsStreamAsync().Result;
context.Request.ContentType = encodedBodyData.Headers.ContentType.ToString();
context.Request.Host = new HostString("localhost");
context.Request.Path = new PathString("/AuthServices/Acs");
var options = StubFactory.CreateOwinOptions();
var subject = new KentorAuthServicesAuthenticationMiddleware(
null, CreateAppBuilder(), options);
await subject.Invoke(context);
context.Authentication.AuthenticationResponseGrant.Properties
.AllowRefresh.Should().BeFalse("AllowRefresh should be false if SessionNotOnOrAfter is specified");
context.Authentication.AuthenticationResponseGrant.Properties
.ExpiresUtc.Should().BeCloseTo(
new DateTimeOffset(2050, 1, 1, 0, 0, 0, new TimeSpan(0)),
because: "SessionNotOnOrAfter should be honored.");
}
开发者ID:woric,项目名称:authservices,代码行数:59,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例14: KentorAuthServicesAuthenticationMiddleware_Acs_HonorsCommandResultHandled
public async Task KentorAuthServicesAuthenticationMiddleware_Acs_HonorsCommandResultHandled()
{
var context = OwinTestHelpers.CreateOwinContext();
context.Request.Method = "POST";
var response =
@"<saml2p:Response xmlns:saml2p=""urn:oasis:names:tc:SAML:2.0:protocol""
xmlns:saml2=""urn:oasis:names:tc:SAML:2.0:assertion""
ID = """ + MethodBase.GetCurrentMethod().Name + @""" Version=""2.0""
IssueInstant=""2013-01-01T00:00:00Z"">
<saml2:Issuer>
https://idp.example.com
</saml2:Issuer>
<saml2p:Status>
<saml2p:StatusCode Value=""urn:oasis:names:tc:SAML:2.0:status:Success"" />
</saml2p:Status>
<saml2:Assertion
Version=""2.0"" ID=""" + MethodBase.GetCurrentMethod().Name + @"_Assertion1""
IssueInstant=""2013-09-25T00:00:00Z"">
<saml2:Issuer>https://idp.example.com</saml2:Issuer>
<saml2:Subject>
<saml2:NameID>SomeUser</saml2:NameID>
<saml2:SubjectConfirmation Method=""urn:oasis:names:tc:SAML:2.0:cm:bearer"" />
</saml2:Subject>
<saml2:Conditions NotOnOrAfter=""2100-01-01T00:00:00Z"" />
</saml2:Assertion>
</saml2p:Response>";
var bodyData = new KeyValuePair<string, string>[] {
new KeyValuePair<string, string>("SAMLResponse",
Convert.ToBase64String(Encoding.UTF8.GetBytes(SignedXmlHelper.SignXml(response)))),
};
var encodedBodyData = new FormUrlEncodedContent(bodyData);
context.Request.Body = encodedBodyData.ReadAsStreamAsync().Result;
context.Request.ContentType = encodedBodyData.Headers.ContentType.ToString();
context.Request.Host = new HostString("localhost");
context.Request.Path = new PathString("/AuthServices/Acs");
var options = StubFactory.CreateOwinOptions();
options.Notifications.AcsCommandResultCreated = (cr, r) =>
{
cr.HandledResult = true;
};
var subject = new KentorAuthServicesAuthenticationMiddleware(
null, CreateAppBuilder(), options);
await subject.Invoke(context);
context.Response.StatusCode.Should().Be(200);
}
开发者ID:woric,项目名称:authservices,代码行数:53,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例15: KentorAuthServicesAuthenticationMiddleware_LogoutRequest_HonorsCommandResultHandled
public async Task KentorAuthServicesAuthenticationMiddleware_LogoutRequest_HonorsCommandResultHandled()
{
var options = new KentorAuthServicesAuthenticationOptions(true)
{
Notifications = new KentorAuthServicesNotifications
{
LogoutCommandResultCreated = cr =>
{
cr.HandledResult = true;
}
}
};
var subject = new KentorAuthServicesAuthenticationMiddleware(null, CreateAppBuilder(), options);
var context = OwinTestHelpers.CreateOwinContext();
var request = new Saml2LogoutRequest()
{
SessionIndex = "SessionId",
DestinationUrl = new Uri("http://sp.example.com/AuthServices/Logout"),
NameId = new Saml2NameIdentifier("NameId"),
Issuer = new EntityId("https://idp.example.com"),
SigningCertificate = SignedXmlHelper.TestCert
};
var url = Saml2Binding.Get(Saml2BindingType.HttpRedirect)
.Bind(request).Location;
context.Request.Path = new PathString(url.AbsolutePath);
context.Request.QueryString = new QueryString(url.Query.TrimStart('?'));
await subject.Invoke(context);
context.Response.StatusCode.Should().Be(200);
}
开发者ID:woric,项目名称:authservices,代码行数:36,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例16: KentorAuthServicesAuthenticationMiddleware_DoesntAugmentsGeneratedClaimsWhenNameIdIsMissing
public async Task KentorAuthServicesAuthenticationMiddleware_DoesntAugmentsGeneratedClaimsWhenNameIdIsMissing()
{
var context = OwinTestHelpers.CreateOwinContext();
string[] specifiedAuthTypes = null;
context.Set<AuthenticateDelegate>("security.Authenticate",
(authTypes, callback, state) =>
{
specifiedAuthTypes = authTypes;
callback(new ClaimsIdentity(new Claim[]
{
new Claim(AuthServicesClaimTypes.SessionIndex, "SessionId", null, "http://idp.example.com"),
new Claim(ClaimTypes.Role, "SomeRole", null, "http://idp.example.com")
}, "Federation"),
new Dictionary<string, string>(),
new Dictionary<string, object>(),
state);
return Task.FromResult(0);
});
var options = new KentorAuthServicesAuthenticationOptions(true);
var subject = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(303, grant: new AuthenticationResponseGrant(
new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.NameIdentifier, "ApplicationNameId")
}, "ApplicationIdentity"), new AuthenticationProperties())),
CreateAppBuilder(),
options);
await subject.Invoke(context);
specifiedAuthTypes.Should().HaveCount(1)
.And.Subject.Single().Should().Be(DefaultSignInAsAuthenticationType);
var expected = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.NameIdentifier, "ApplicationNameId"),
}, "ApplicationIdentity");
context.Authentication.AuthenticationResponseGrant.Identity
.ShouldBeEquivalentTo(expected, opt => opt.IgnoringCyclicReferences());
}
开发者ID:johansvard,项目名称:authservices,代码行数:45,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例17: KentorAuthServicesAuthenticationMiddleware_NoRedirectOnNon401
public async Task KentorAuthServicesAuthenticationMiddleware_NoRedirectOnNon401()
{
var middleware = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(200, new AuthenticationResponseChallenge(
new string[] { "KentorAuthServices" }, null)), CreateAppBuilder(),
new KentorAuthServicesAuthenticationOptions(true));
var context = OwinTestHelpers.CreateOwinContext();
await middleware.Invoke(context);
context.Response.StatusCode.Should().Be(200);
context.Response.Headers["Location"].Should().BeNull();
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:14,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例18: KentorAuthServicesAuthenticationMiddleware_RedirectRemembersReturnPath
public async Task KentorAuthServicesAuthenticationMiddleware_RedirectRemembersReturnPath()
{
var returnUri = "http://sp.example.com/returnuri";
var middleware = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(401, new AuthenticationResponseChallenge(
new string[] { "KentorAuthServices" }, new AuthenticationProperties()
{
RedirectUri = returnUri
})),
CreateAppBuilder(), new KentorAuthServicesAuthenticationOptions());
var context = OwinTestHelpers.CreateOwinContext();
await middleware.Invoke(context);
var requestId = AuthnRequestHelper.GetRequestId(new Uri(context.Response.Headers["Location"]));
StoredRequestState storedAuthnData;
PendingAuthnRequests.TryRemove(new System.IdentityModel.Tokens.Saml2Id(requestId), out storedAuthnData);
storedAuthnData.ReturnUri.Should().Be(returnUri);
}
开发者ID:dmarlow,项目名称:authservices,代码行数:23,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例19: KentorAuthServicesAuthenticationMiddleware_RedirectoToSecondIdp_OwinEnvironment
public async Task KentorAuthServicesAuthenticationMiddleware_RedirectoToSecondIdp_OwinEnvironment()
{
var secondIdp = Options.FromConfiguration.IdentityProviders[1];
var secondDestination = secondIdp.SingleSignOnServiceUrl;
var secondEntityId = secondIdp.EntityId;
var middleware = new KentorAuthServicesAuthenticationMiddleware(
new StubOwinMiddleware(401, new AuthenticationResponseChallenge(
new string[] { "KentorAuthServices" }, new AuthenticationProperties())),
CreateAppBuilder(), new KentorAuthServicesAuthenticationOptions(true));
var context = OwinTestHelpers.CreateOwinContext();
context.Environment["KentorAuthServices.idp"] = secondEntityId;
await middleware.Invoke(context);
context.Response.StatusCode.Should().Be(303);
context.Response.Headers["Location"].Should().StartWith(secondDestination.ToString());
}
开发者ID:arvinsuresh,项目名称:authservices,代码行数:18,代码来源:KentorAuthServicesAuthenticationMiddlewareTests.cs
示例20: KentorAuthServicesAuthenticationMiddleware_AcsWorks
public async Task KentorAuthServicesAuthenticationMiddleware_AcsWorks()
{
var context = OwinTestHelpers.CreateOwinContext();
context.Request.Method = "POST";
var response =
@"<saml2p:Response xmlns:saml2p=""urn:oasis:names:tc:SAML:2.0:protocol""
xmlns:saml2=""urn:oasis:names:tc:SAML:2.0:assertion""
ID = ""KentorAuthServicesAuthenticationMiddleware_AcsWorks"" Version=""2.0"" IssueInstant=""2013-01-01T00:00:00Z"">
<saml2:Issuer>
https://idp.example.com
</saml2:Issuer>
<saml2p:Status>
<saml2p:StatusCode Value=""urn:oasis:names:tc:SAML:2.0:status:Success"" />
</saml2p:Status>
<saml2:Assertion
Version=""2.0"" ID=""KentorAuthServicesAuthenticationMiddleware_AcsWorks_Assertion1""
IssueInstant=""2013-09-25T00:00:00Z"">
<saml2:Issuer>https://idp.example.com</saml2:Issuer>
<saml2:Subject>
<saml2:NameID>SomeUser</saml2:NameID>
<saml2:SubjectConfirmation Method=""urn:oasis:names:tc:SAML:2.0:cm:bearer"" />
</saml2:Subject>
<saml2:Conditions NotOnOrAfter=""2100-01-01T00:00:00Z"" />
</saml2:Assertion>
</saml2p:Response>";
var bodyData = new KeyValuePair<string, string>[] {
new KeyValuePair<string, string>("SAMLResponse",
Convert.ToBase64String(Encoding.UTF8.GetBytes(SignedXmlHelper.SignXml(response))))
};
var encodedBodyData = new FormUrlEncodedContent(bodyData);
context.Request.Body = encodedBodyData.ReadAsStreamAsync().Result;
context.Request.ContentType = encodedBodyData.Headers.ContentType.ToString();
context.Request.Host = new HostString("localhost");
context.Request.Path = new PathString("/Saml2AuthenticationModule/acs");
var signInAsAuthenticationType = "AuthType";
var ids = new ClaimsIdentity[] { new ClaimsIdentity(signInAsAuthenticationType),
new ClaimsIdentity(signInAsAuthenticationType) };
ids[0].AddClaim(new Claim(ClaimTypes.NameIdentifier, "SomeUser", null, "https://idp.example.com"));
ids[1].AddClaim(new Claim(ClaimTypes.Role, "RoleFromClaimsAuthManager",
null, "ClaimsAuthenticationManagerMock"));
var middleware = new KentorAuthServicesAuthenticationMiddleware(null, CreateAppBuilder(),
new KentorAuthServicesAuthenticationOptions()
{
SignInAsAuthenticationType = "AuthType"
});
await middleware.Invoke(context);
context.Response.StatusCode.Should().Be(302);
context.Response.Headers["Location"].Should().Be("http://localhost/LoggedIn");
context.Authentication.AuthenticationResp
|
请发表评论