pub struct AuthnRequest { /* private fields */ }Expand description
Parsed AuthnRequest result.
Implementations§
Source§impl AuthnRequest
impl AuthnRequest
Sourcepub fn issuer(&self) -> &EntityId
pub fn issuer(&self) -> &EntityId
Request issuer.
Examples found in repository?
examples/sso.rs (line 67)
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 use saml_rs::{
10 AcsEndpoint, AuthnRequest, BrowserInput, CertificatePem, Credentials, EntityId, IdpConfig,
11 IdpDescriptor, IdpValidationPolicy, MetadataTrustPolicy, NameId, PrivateKeyPem,
12 RelayStateParam, ReplayPolicy, RespondSso, Saml, SamlValidationContext, SpConfig,
13 SpDescriptor, SpValidationPolicy, SsoEndpoint, SsoResponse, StartSso, Subject,
14 };
15 use std::time::SystemTime;
16
17 let privkey = include_str!("../tests/fixtures/key/sp_privkey.pem");
18 let cert = include_str!("../tests/fixtures/key/sp_signing_cert.cer");
19 let credentials = || Credentials {
20 signing_key: Some(PrivateKeyPem::new(privkey)),
21 signing_certificate: Some(CertificatePem::new(cert)),
22 ..Credentials::default()
23 };
24 let validation =
25 || SamlValidationContext::new(SystemTime::now(), ReplayPolicy::DisabledForCompatibility);
26
27 let sp = Saml::sp(
28 SpConfig::builder(EntityId::try_new("https://sp.example.com/metadata")?)
29 .acs_endpoint(AcsEndpoint::post("https://sp.example.com/acs")?)
30 .credentials(credentials())
31 .validation(SpValidationPolicy::strict())
32 .build()?,
33 )?;
34 let idp = Saml::idp(
35 IdpConfig::builder(EntityId::try_new("https://idp.example.com/metadata")?)
36 .sso_endpoint(SsoEndpoint::post("https://idp.example.com/sso")?)
37 .credentials(credentials())
38 .validation(IdpValidationPolicy::strict())
39 .build()?,
40 )?;
41
42 let sp_descriptor = SpDescriptor::from_metadata_xml_for(
43 EntityId::try_new("https://sp.example.com/metadata")?,
44 sp.metadata_xml(),
45 MetadataTrustPolicy::UnsignedForCompatibility,
46 )?;
47 let idp_descriptor = IdpDescriptor::from_metadata_xml_for(
48 EntityId::try_new("https://idp.example.com/metadata")?,
49 idp.metadata_xml(),
50 MetadataTrustPolicy::UnsignedForCompatibility,
51 )?;
52
53 let relay_state = RelayStateParam::try_from_option(Some("demo-state".to_string()))?;
54 let started = sp.start_sso(&idp_descriptor, StartSso::post().relay_state(relay_state))?;
55 println!(
56 "SP -> AuthnRequest id = {}",
57 started.pending.request_id().as_str()
58 );
59
60 let request = idp.receive_sso(
61 &sp_descriptor,
62 BrowserInput::<AuthnRequest>::post(started.outbound.post_form()?.fields().to_vec()),
63 validation(),
64 )?;
65 println!(
66 "IdP <- request issuer = {}",
67 request.message().issuer().as_str()
68 );
69
70 let response = idp.respond_sso(
71 &sp_descriptor,
72 &request,
73 Subject::new(NameId::new("alice@example.com", None), Vec::new()),
74 RespondSso::post(),
75 )?;
76
77 let session = sp.finish_sso(
78 &idp_descriptor,
79 &started.pending,
80 BrowserInput::<SsoResponse>::post(response.post_form()?.fields().to_vec()),
81 validation(),
82 );
83 let session = session?;
84 println!("SP <- authenticated = {}", session.name_id().value());
85 Ok(())
86}Sourcepub fn destination(&self) -> Option<&EndpointUrl>
pub fn destination(&self) -> Option<&EndpointUrl>
Destination endpoint, when present.
Sourcepub fn acs_url(&self) -> Option<&EndpointUrl>
pub fn acs_url(&self) -> Option<&EndpointUrl>
AssertionConsumerServiceURL, when present.
Sourcepub fn protocol_binding(&self) -> Option<SsoResponseBinding>
pub fn protocol_binding(&self) -> Option<SsoResponseBinding>
Requested response ProtocolBinding, when present.
Sourcepub fn name_id_policy(&self) -> Option<&NameIdPolicy>
pub fn name_id_policy(&self) -> Option<&NameIdPolicy>
NameIDPolicy, when present.
Sourcepub fn check_and_store_replay(
&self,
validation: &mut SamlValidationContext<'_>,
) -> Result<(), SamlError>
pub fn check_and_store_replay( &self, validation: &mut SamlValidationContext<'_>, ) -> Result<(), SamlError>
Check and store this AuthnRequest’s replay key using caller cache state.
§Errors
Returns SamlError::ReplayDetected when the request ID has already
been seen. Cache implementations may also return storage-specific
failures mapped to SamlError.
Sourcepub fn raw_flow(&self) -> &FlowResult
pub fn raw_flow(&self) -> &FlowResult
Raw validated flow result.
Trait Implementations§
Source§impl Clone for AuthnRequest
impl Clone for AuthnRequest
Source§fn clone(&self) -> AuthnRequest
fn clone(&self) -> AuthnRequest
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AuthnRequest
impl Debug for AuthnRequest
Source§impl TryFrom<FlowResult> for AuthnRequest
impl TryFrom<FlowResult> for AuthnRequest
Auto Trait Implementations§
impl Freeze for AuthnRequest
impl RefUnwindSafe for AuthnRequest
impl Send for AuthnRequest
impl Sync for AuthnRequest
impl Unpin for AuthnRequest
impl UnsafeUnpin for AuthnRequest
impl UnwindSafe for AuthnRequest
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more