Commit e738b47
Changed files (2)
lib
saml
spec
lib/saml/kit/authentication_request.rb
@@ -32,6 +32,10 @@ module Saml
@hash[name]['Issuer']
end
+ def name_id_format
+ @hash[name]['NameIDPolicy']['Format']
+ end
+
def certificate
@hash[name]['Signature']['KeyInfo']['X509Data']['X509Certificate']
end
@@ -102,7 +106,7 @@ module Saml
@id = SecureRandom.uuid
@issued_at = Time.now.utc
@issuer = configuration.issuer
- @name_id_format = Namespaces::EMAIL_ADDRESS
+ @name_id_format = Namespaces::PERSISTENT
end
def to_xml(xml = ::Builder::XmlMarkup.new)
@@ -127,7 +131,7 @@ module Saml
"xmlns:saml" => Namespaces::ASSERTION,
ID: "_#{id}",
Version: "2.0",
- IssueInstant: issued_at.strftime("%Y-%m-%dT%H:%M:%SZ"),
+ IssueInstant: issued_at.utc.iso8601,
}
options[:AssertionConsumerServiceURL] = acs_url if acs_url.present?
options
spec/saml/authentication_request_spec.rb
@@ -5,18 +5,21 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
let(:id) { SecureRandom.uuid }
let(:acs_url) { "https://#{FFaker::Internet.domain_name}/acs" }
let(:issuer) { FFaker::Movie.title }
+ let(:name_id_format) { Saml::Kit::Namespaces::EMAIL_ADDRESS }
let(:raw_xml) do
builder = described_class::Builder.new
builder.id = id
builder.issued_at = Time.now.utc
builder.issuer = issuer
builder.acs_url = acs_url
+ builder.name_id_format = name_id_format
builder.to_xml
end
it { expect(subject.issuer).to eql(issuer) }
it { expect(subject.id).to eql("_#{id}") }
it { expect(subject.acs_url).to eql(acs_url) }
+ it { expect(subject.name_id_format).to eql(name_id_format) }
describe "#to_xml" do
subject { described_class::Builder.new(configuration) }
@@ -29,16 +32,16 @@ RSpec.describe Saml::Kit::AuthenticationRequest do
let(:acs_url) { "https://airport.dev/session/acs" }
it 'returns a valid authentication request' do
- travel_to DateTime.new(2014, 7, 16, 23, 52, 45)
+ travel_to 1.second.from_now
subject.acs_url = acs_url
result = Hash.from_xml(subject.to_xml)
expect(result['AuthnRequest']['ID']).to be_present
expect(result['AuthnRequest']['Version']).to eql('2.0')
- expect(result['AuthnRequest']['IssueInstant']).to eql('2014-07-16T23:52:45Z')
+ expect(result['AuthnRequest']['IssueInstant']).to eql(Time.now.utc.iso8601)
expect(result['AuthnRequest']['AssertionConsumerServiceURL']).to eql(acs_url)
expect(result['AuthnRequest']['Issuer']).to eql(issuer)
- expect(result['AuthnRequest']['NameIDPolicy']['Format']).to eql("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")
+ expect(result['AuthnRequest']['NameIDPolicy']['Format']).to eql(Saml::Kit::Namespaces::PERSISTENT)
end
end