Class: Onelogin::Saml::AuthRequest
- Inherits:
-
Object
- Object
- Onelogin::Saml::AuthRequest
- Defined in:
- lib/onelogin/saml/auth_request.rb
Instance Attribute Summary collapse
-
#forward_url ⇒ Object
readonly
Returns the value of attribute forward_url.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#request_xml ⇒ Object
readonly
Returns the value of attribute request_xml.
-
#settings ⇒ Object
readonly
Returns the value of attribute settings.
Class Method Summary collapse
Instance Method Summary collapse
- #generate_request ⇒ Object
-
#initialize(settings) ⇒ AuthRequest
constructor
A new instance of AuthRequest.
Constructor Details
#initialize(settings) ⇒ AuthRequest
6 7 8 |
# File 'lib/onelogin/saml/auth_request.rb', line 6 def initialize(settings) @settings = settings end |
Instance Attribute Details
#forward_url ⇒ Object (readonly)
Returns the value of attribute forward_url.
4 5 6 |
# File 'lib/onelogin/saml/auth_request.rb', line 4 def forward_url @forward_url end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
4 5 6 |
# File 'lib/onelogin/saml/auth_request.rb', line 4 def id @id end |
#request_xml ⇒ Object (readonly)
Returns the value of attribute request_xml.
4 5 6 |
# File 'lib/onelogin/saml/auth_request.rb', line 4 def request_xml @request_xml end |
#settings ⇒ Object (readonly)
Returns the value of attribute settings.
4 5 6 |
# File 'lib/onelogin/saml/auth_request.rb', line 4 def settings @settings end |
Class Method Details
.create(settings) ⇒ Object
10 11 12 13 |
# File 'lib/onelogin/saml/auth_request.rb', line 10 def self.create(settings) ar = AuthRequest.new(settings) ar.generate_request end |
Instance Method Details
#generate_request ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/onelogin/saml/auth_request.rb', line 15 def generate_request @id = Onelogin::Saml::AuthRequest.generate_unique_id(42) issue_instant = Onelogin::Saml::AuthRequest. @request_xml = "<samlp:AuthnRequest xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" ID=\"#{@id}\" Version=\"2.0\" IssueInstant=\"#{issue_instant}\" ProtocolBinding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" AssertionConsumerServiceURL=\"#{Array(settings.assertion_consumer_service_url).first}\">" + "<saml:Issuer xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">#{@settings.issuer}</saml:Issuer>\n" + "<samlp:NameIDPolicy xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" Format=\"#{@settings.name_identifier_format}\" AllowCreate=\"true\"></samlp:NameIDPolicy>\n" if @settings.requested_authn_context @request_xml += "<samlp:RequestedAuthnContext xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" Comparison=\"exact\">" @request_xml += "<saml:AuthnContextClassRef xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">#{@settings.requested_authn_context}</saml:AuthnContextClassRef>" @request_xml += "</samlp:RequestedAuthnContext>\n" end @request_xml += "</samlp:AuthnRequest>" deflated_request = Zlib::Deflate.deflate(@request_xml, 9)[2..-5] base64_request = Base64.strict_encode64(deflated_request) encoded_request = CGI.escape(base64_request) @forward_url = @settings.idp_sso_target_url + (@settings.idp_sso_target_url.include?("?") ? "&" : "?") + "SAMLRequest=" + encoded_request end |