diff --git a/.DS_Store b/.DS_Store
index ee7b57b..f0090ff 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/aws_google_saml/.DS_Store b/aws_google_saml/.DS_Store
new file mode 100644
index 0000000..068a30e
Binary files /dev/null and b/aws_google_saml/.DS_Store differ
diff --git a/aws_google_saml/2026-0-24_13-041_d-90661c455f_sp_saml_metadata.xml b/aws_google_saml/2026-0-24_13-041_d-90661c455f_sp_saml_metadata.xml
new file mode 100644
index 0000000..0c1a990
--- /dev/null
+++ b/aws_google_saml/2026-0-24_13-041_d-90661c455f_sp_saml_metadata.xml
@@ -0,0 +1 @@
+urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
\ No newline at end of file
diff --git a/aws_google_saml/2026-0-24_13-045_d-90661c455f_sp_saml_metadata.xml b/aws_google_saml/2026-0-24_13-045_d-90661c455f_sp_saml_metadata.xml
new file mode 100644
index 0000000..0c1a990
--- /dev/null
+++ b/aws_google_saml/2026-0-24_13-045_d-90661c455f_sp_saml_metadata.xml
@@ -0,0 +1 @@
+urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
\ No newline at end of file
diff --git a/aws_google_saml/GoogleIDPMetadata (1).xml b/aws_google_saml/GoogleIDPMetadata (1).xml
new file mode 100644
index 0000000..597f1c2
--- /dev/null
+++ b/aws_google_saml/GoogleIDPMetadata (1).xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ MIIDdDCCAlygAwIBAgIGAZAnLlJYMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTC0dvb2dsZSBJ
+bmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGDAWBgNVBAsTD0dv
+b2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjQwNjE3
+MTcxMTA1WhcNMjkwNjE2MTcxMTA1WjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMN
+TW91bnRhaW4gVmlldzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAwtQfziZzGOKbUVp4NeEypAzgDVqFu/NdMzxk/XCkHlfAZRwlbnP7FjBDUuzcZ69m
+VgeX827UQjutKN33LZWvMPnXhWaPsMUDrWQHSK0KTrOPU99AF2uFvKN9nUgey4SyNd+f/VVvFHfk
+B9sjkYYcfOwYXnDylNBTAJJRdhBB3xTtBdIMKP+bGsEPnCFMMeni8l92VhK035k/lGdvJCmP/+9Q
+Lyhl9qah6B07DcmHIgKDtqDL9wxoI0ZzmOIpvfPDyNxaHMeznJ+2l7BhkHchhQsqsXmchwcf8RlW
+VU6NRJkzQ8c3NDHEf1BiujeBHtyu7R0lQxrXJjJeHOnTnoUxxwIDAQABMA0GCSqGSIb3DQEBCwUA
+A4IBAQAqyG0fwJ/Enn5xy3aeCR2LFLzinZZXxfb0MKjesUFfdctpNI5le6h/l1f7cDt1018SIzO0
+OyLo4AZEm5SGn4/ZMvOlDrnOiR9epa/xSLlk372HMCfpRMzG63RilFYiE5nn/jTdu9A1I4WwgVND
+SSt0a36IW43Zsx4ZRqG1tRZmf5uVKanKF2u00h80wXniS837u7mX+AH/GItyqK8xW4+u9LVuWsC+
+AC5OdBm53LSRwB+NH++SV9TaNqmsOQTsBYWcmv1L26d5ni/J5I1YI002dO7rBIxzURxdcHcPwxbz
+iFyI0D6oarxHqk+IsrrMoq0OaDQvyhRPXCtxnYtMGvfL
+
+
+
+ urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
+
+
+
+
diff --git a/aws_google_saml/GoogleIDPMetadata (2).xml b/aws_google_saml/GoogleIDPMetadata (2).xml
new file mode 100644
index 0000000..597f1c2
--- /dev/null
+++ b/aws_google_saml/GoogleIDPMetadata (2).xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ MIIDdDCCAlygAwIBAgIGAZAnLlJYMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTC0dvb2dsZSBJ
+bmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGDAWBgNVBAsTD0dv
+b2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjQwNjE3
+MTcxMTA1WhcNMjkwNjE2MTcxMTA1WjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMN
+TW91bnRhaW4gVmlldzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAwtQfziZzGOKbUVp4NeEypAzgDVqFu/NdMzxk/XCkHlfAZRwlbnP7FjBDUuzcZ69m
+VgeX827UQjutKN33LZWvMPnXhWaPsMUDrWQHSK0KTrOPU99AF2uFvKN9nUgey4SyNd+f/VVvFHfk
+B9sjkYYcfOwYXnDylNBTAJJRdhBB3xTtBdIMKP+bGsEPnCFMMeni8l92VhK035k/lGdvJCmP/+9Q
+Lyhl9qah6B07DcmHIgKDtqDL9wxoI0ZzmOIpvfPDyNxaHMeznJ+2l7BhkHchhQsqsXmchwcf8RlW
+VU6NRJkzQ8c3NDHEf1BiujeBHtyu7R0lQxrXJjJeHOnTnoUxxwIDAQABMA0GCSqGSIb3DQEBCwUA
+A4IBAQAqyG0fwJ/Enn5xy3aeCR2LFLzinZZXxfb0MKjesUFfdctpNI5le6h/l1f7cDt1018SIzO0
+OyLo4AZEm5SGn4/ZMvOlDrnOiR9epa/xSLlk372HMCfpRMzG63RilFYiE5nn/jTdu9A1I4WwgVND
+SSt0a36IW43Zsx4ZRqG1tRZmf5uVKanKF2u00h80wXniS837u7mX+AH/GItyqK8xW4+u9LVuWsC+
+AC5OdBm53LSRwB+NH++SV9TaNqmsOQTsBYWcmv1L26d5ni/J5I1YI002dO7rBIxzURxdcHcPwxbz
+iFyI0D6oarxHqk+IsrrMoq0OaDQvyhRPXCtxnYtMGvfL
+
+
+
+ urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
+
+
+
+
diff --git a/aws_google_saml/GoogleIDPMetadata (3).xml b/aws_google_saml/GoogleIDPMetadata (3).xml
new file mode 100644
index 0000000..597f1c2
--- /dev/null
+++ b/aws_google_saml/GoogleIDPMetadata (3).xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ MIIDdDCCAlygAwIBAgIGAZAnLlJYMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTC0dvb2dsZSBJ
+bmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGDAWBgNVBAsTD0dv
+b2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjQwNjE3
+MTcxMTA1WhcNMjkwNjE2MTcxMTA1WjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMN
+TW91bnRhaW4gVmlldzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAwtQfziZzGOKbUVp4NeEypAzgDVqFu/NdMzxk/XCkHlfAZRwlbnP7FjBDUuzcZ69m
+VgeX827UQjutKN33LZWvMPnXhWaPsMUDrWQHSK0KTrOPU99AF2uFvKN9nUgey4SyNd+f/VVvFHfk
+B9sjkYYcfOwYXnDylNBTAJJRdhBB3xTtBdIMKP+bGsEPnCFMMeni8l92VhK035k/lGdvJCmP/+9Q
+Lyhl9qah6B07DcmHIgKDtqDL9wxoI0ZzmOIpvfPDyNxaHMeznJ+2l7BhkHchhQsqsXmchwcf8RlW
+VU6NRJkzQ8c3NDHEf1BiujeBHtyu7R0lQxrXJjJeHOnTnoUxxwIDAQABMA0GCSqGSIb3DQEBCwUA
+A4IBAQAqyG0fwJ/Enn5xy3aeCR2LFLzinZZXxfb0MKjesUFfdctpNI5le6h/l1f7cDt1018SIzO0
+OyLo4AZEm5SGn4/ZMvOlDrnOiR9epa/xSLlk372HMCfpRMzG63RilFYiE5nn/jTdu9A1I4WwgVND
+SSt0a36IW43Zsx4ZRqG1tRZmf5uVKanKF2u00h80wXniS837u7mX+AH/GItyqK8xW4+u9LVuWsC+
+AC5OdBm53LSRwB+NH++SV9TaNqmsOQTsBYWcmv1L26d5ni/J5I1YI002dO7rBIxzURxdcHcPwxbz
+iFyI0D6oarxHqk+IsrrMoq0OaDQvyhRPXCtxnYtMGvfL
+
+
+
+ urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
+
+
+
+
diff --git a/aws_google_saml/GoogleIDPMetadata.xml b/aws_google_saml/GoogleIDPMetadata.xml
new file mode 100644
index 0000000..597f1c2
--- /dev/null
+++ b/aws_google_saml/GoogleIDPMetadata.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ MIIDdDCCAlygAwIBAgIGAZAnLlJYMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTC0dvb2dsZSBJ
+bmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGDAWBgNVBAsTD0dv
+b2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjQwNjE3
+MTcxMTA1WhcNMjkwNjE2MTcxMTA1WjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMN
+TW91bnRhaW4gVmlldzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAwtQfziZzGOKbUVp4NeEypAzgDVqFu/NdMzxk/XCkHlfAZRwlbnP7FjBDUuzcZ69m
+VgeX827UQjutKN33LZWvMPnXhWaPsMUDrWQHSK0KTrOPU99AF2uFvKN9nUgey4SyNd+f/VVvFHfk
+B9sjkYYcfOwYXnDylNBTAJJRdhBB3xTtBdIMKP+bGsEPnCFMMeni8l92VhK035k/lGdvJCmP/+9Q
+Lyhl9qah6B07DcmHIgKDtqDL9wxoI0ZzmOIpvfPDyNxaHMeznJ+2l7BhkHchhQsqsXmchwcf8RlW
+VU6NRJkzQ8c3NDHEf1BiujeBHtyu7R0lQxrXJjJeHOnTnoUxxwIDAQABMA0GCSqGSIb3DQEBCwUA
+A4IBAQAqyG0fwJ/Enn5xy3aeCR2LFLzinZZXxfb0MKjesUFfdctpNI5le6h/l1f7cDt1018SIzO0
+OyLo4AZEm5SGn4/ZMvOlDrnOiR9epa/xSLlk372HMCfpRMzG63RilFYiE5nn/jTdu9A1I4WwgVND
+SSt0a36IW43Zsx4ZRqG1tRZmf5uVKanKF2u00h80wXniS837u7mX+AH/GItyqK8xW4+u9LVuWsC+
+AC5OdBm53LSRwB+NH++SV9TaNqmsOQTsBYWcmv1L26d5ni/J5I1YI002dO7rBIxzURxdcHcPwxbz
+iFyI0D6oarxHqk+IsrrMoq0OaDQvyhRPXCtxnYtMGvfL
+
+
+
+ urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
+
+
+
+
diff --git a/aws_google_saml/GoogleWorkspace.xml b/aws_google_saml/GoogleWorkspace.xml
new file mode 100644
index 0000000..5c5c92b
--- /dev/null
+++ b/aws_google_saml/GoogleWorkspace.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ MIIDdDCCAlygAwIBAgIGAZAnLlJYMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTC0dvb2dsZSBJ bmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGDAWBgNVBAsTD0dv b2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjQwNjE3 MTcxMTA1WhcNMjkwNjE2MTcxMTA1WjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMN TW91bnRhaW4gVmlldzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsx CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAwtQfziZzGOKbUVp4NeEypAzgDVqFu/NdMzxk/XCkHlfAZRwlbnP7FjBDUuzcZ69m VgeX827UQjutKN33LZWvMPnXhWaPsMUDrWQHSK0KTrOPU99AF2uFvKN9nUgey4SyNd+f/VVvFHfk B9sjkYYcfOwYXnDylNBTAJJRdhBB3xTtBdIMKP+bGsEPnCFMMeni8l92VhK035k/lGdvJCmP/+9Q Lyhl9qah6B07DcmHIgKDtqDL9wxoI0ZzmOIpvfPDyNxaHMeznJ+2l7BhkHchhQsqsXmchwcf8RlW VU6NRJkzQ8c3NDHEf1BiujeBHtyu7R0lQxrXJjJeHOnTnoUxxwIDAQABMA0GCSqGSIb3DQEBCwUA A4IBAQAqyG0fwJ/Enn5xy3aeCR2LFLzinZZXxfb0MKjesUFfdctpNI5le6h/l1f7cDt1018SIzO0 OyLo4AZEm5SGn4/ZMvOlDrnOiR9epa/xSLlk372HMCfpRMzG63RilFYiE5nn/jTdu9A1I4WwgVND SSt0a36IW43Zsx4ZRqG1tRZmf5uVKanKF2u00h80wXniS837u7mX+AH/GItyqK8xW4+u9LVuWsC+ AC5OdBm53LSRwB+NH++SV9TaNqmsOQTsBYWcmv1L26d5ni/J5I1YI002dO7rBIxzURxdcHcPwxbz iFyI0D6oarxHqk+IsrrMoq0OaDQvyhRPXCtxnYtMGvfL
+
+
+
+ urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
+
+
+
+
\ No newline at end of file
diff --git a/aws_google_saml/cert.b64 b/aws_google_saml/cert.b64
new file mode 100644
index 0000000..b7fd762
--- /dev/null
+++ b/aws_google_saml/cert.b64
@@ -0,0 +1 @@
+MIIDdDCCAlygAwIBAgIGAZAnLlJYMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTC0dvb2dsZSBJ\nbmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGDAWBgNVBAsTD0dv\nb2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjQwNjE3\nMTcxMTA1WhcNMjkwNjE2MTcxMTA1WjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMN\nTW91bnRhaW4gVmlldzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsx\nCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A\nMIIBCgKCAQEAwtQfziZzGOKbUVp4NeEypAzgDVqFu/NdMzxk/XCkHlfAZRwlbnP7FjBDUuzcZ69m\nVgeX827UQjutKN33LZWvMPnXhWaPsMUDrWQHSK0KTrOPU99AF2uFvKN9nUgey4SyNd+f/VVvFHfk\nB9sjkYYcfOwYXnDylNBTAJJRdhBB3xTtBdIMKP+bGsEPnCFMMeni8l92VhK035k/lGdvJCmP/+9Q\nLyhl9qah6B07DcmHIgKDtqDL9wxoI0ZzmOIpvfPDyNxaHMeznJ+2l7BhkHchhQsqsXmchwcf8RlW\nVU6NRJkzQ8c3NDHEf1BiujeBHtyu7R0lQxrXJjJeHOnTnoUxxwIDAQABMA0GCSqGSIb3DQEBCwUA\nA4IBAQAqyG0fwJ/Enn5xy3aeCR2LFLzinZZXxfb0MKjesUFfdctpNI5le6h/l1f7cDt1018SIzO0\nOyLo4AZEm5SGn4/ZMvOlDrnOiR9epa/xSLlk372HMCfpRMzG63RilFYiE5nn/jTdu9A1I4WwgVND\nSSt0a36IW43Zsx4ZRqG1tRZmf5uVKanKF2u00h80wXniS837u7mX+AH/GItyqK8xW4+u9LVuWsC+\nAC5OdBm53LSRwB+NH++SV9TaNqmsOQTsBYWcmv1L26d5ni/J5I1YI002dO7rBIxzURxdcHcPwxbz\niFyI0D6oarxHqk+IsrrMoq0OaDQvyhRPXCtxnYtMGvfL
diff --git a/aws_google_saml/google_cert.pem b/aws_google_saml/google_cert.pem
new file mode 100644
index 0000000..a55c4d6
--- /dev/null
+++ b/aws_google_saml/google_cert.pem
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDdDCCAlygAwIBAgIGAZAnLlJYMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoT
+C0dvb2dsZSBJbmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZH
+b29nbGUxGDAWBgNVBAsTD0dvb2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWEwHhcNMjQwNjE3MTcxMTA1WhcNMjkwNjE2MTcxMTA1
+WjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMNTW91bnRhaW4gVmll
+dzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsxCzAJ
+BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEAwtQfziZzGOKbUVp4NeEypAzgDVqFu/NdMzxk/XCkHlfA
+ZRwlbnP7FjBDUuzcZ69mVgeX827UQjutKN33LZWvMPnXhWaPsMUDrWQHSK0KTrOP
+U99AF2uFvKN9nUgey4SyNd+f/VVvFHfkB9sjkYYcfOwYXnDylNBTAJJRdhBB3xTt
+BdIMKP+bGsEPnCFMMeni8l92VhK035k/lGdvJCmP/+9QLyhl9qah6B07DcmHIgKD
+tqDL9wxoI0ZzmOIpvfPDyNxaHMeznJ+2l7BhkHchhQsqsXmchwcf8RlWVU6NRJkz
+Q8c3NDHEf1BiujeBHtyu7R0lQxrXJjJeHOnTnoUxxwIDAQABMA0GCSqGSIb3DQEB
+CwUAA4IBAQAqyG0fwJ/Enn5xy3aeCR2LFLzinZZXxfb0MKjesUFfdctpNI5le6h/
+l1f7cDt1018SIzO0OyLo4AZEm5SGn4/ZMvOlDrnOiR9epa/xSLlk372HMCfpRMzG
+63RilFYiE5nn/jTdu9A1I4WwgVNDSSt0a36IW43Zsx4ZRqG1tRZmf5uVKanKF2u0
+0h80wXniS837u7mX+AH/GItyqK8xW4+u9LVuWsC+AC5OdBm53LSRwB+NH++SV9Ta
+NqmsOQTsBYWcmv1L26d5ni/J5I1YI002dO7rBIxzURxdcHcPwxbziFyI0D6oarxH
+qk+IsrrMoq0OaDQvyhRPXCtxnYtMGvfL
+-----END CERTIFICATE-----
diff --git a/aws_google_saml/inspect_saml.py b/aws_google_saml/inspect_saml.py
new file mode 100644
index 0000000..c454c46
--- /dev/null
+++ b/aws_google_saml/inspect_saml.py
@@ -0,0 +1,81 @@
+#!/usr/bin/env python3
+import sys, subprocess
+from xml.etree import ElementTree as ET
+
+fn = "saml-response.xml"
+ns = {
+ 'p': 'urn:oasis:names:tc:SAML:2.0:protocol',
+ 's': 'urn:oasis:names:tc:SAML:2.0:assertion',
+ 'ds': 'http://www.w3.org/2000/09/xmldsig#'
+}
+
+try:
+ root = ET.parse(fn).getroot()
+except Exception as e:
+ print("ERROR: cannot parse saml-response.xml:", e)
+ sys.exit(1)
+
+def find_text(path, default=""):
+ el = root.find(path, ns)
+ return el.text.strip() if el is not None and el.text else default
+
+# Status (StatusCode Value attribute)
+status_el = root.find('.//p:Status/p:StatusCode', ns)
+status = status_el.get('Value') if status_el is not None else ""
+print("Status: " + status)
+
+# NameID
+nameid = find_text('.//s:NameID')
+print("Name: " + nameid)
+
+# Audience
+aud = find_text('.//s:Audience')
+print("Audience: " + aud)
+
+# Recipient (SubjectConfirmationData @Recipient)
+rec_el = root.find('.//s:Subject/s:SubjectConfirmation/s:SubjectConfirmationData', ns)
+recipient = rec_el.get('Recipient') if rec_el is not None else ""
+print("Recipient: " + recipient)
+
+# Extract cert and write PEM with proper line breaks
+cert_el = root.find('.//ds:X509Certificate', ns)
+if cert_el is None or not cert_el.text or not cert_el.text.strip():
+ print("no-cert-found")
+ sys.exit(0)
+
+b64 = "".join(cert_el.text.split())
+pem = "-----BEGIN CERTIFICATE-----\n"
+# wrap at 64 chars per line
+for i in range(0, len(b64), 64):
+ pem += b64[i:i+64] + "\n"
+pem += "-----END CERTIFICATE-----\n"
+
+with open("google_cert.pem", "w") as f:
+ f.write(pem)
+
+# Try to print openssl fingerprint
+try:
+ out = subprocess.check_output(['openssl','x509','-in','google_cert.pem','-noout','-fingerprint','-sha256'], stderr=subprocess.STDOUT)
+ print(out.decode().strip())
+except Exception as e:
+ print("openssl-not-available-or-error")
+
+# Print all Attribute values for AWS Role and RoleSessionName
+role_attr = root.find('.//s:Attribute[@Name="https://aws.amazon.com/SAML/Attributes/Role"]', ns)
+if role_attr is not None:
+ vals = [v.text.strip() for v in role_attr.findall('.//s:AttributeValue', ns) if v.text]
+ for v in vals:
+ print("ROLE_ATTRIBUTE_VALUE: " + v)
+else:
+ print("ROLE_ATTRIBUTE_VALUE: not-present")
+
+role_session_attr = root.find('.//s:Attribute[@Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName"]', ns)
+if role_session_attr is not None:
+ vals = [v.text.strip() for v in role_session_attr.findall('.//s:AttributeValue', ns) if v.text]
+ for v in vals:
+ print("ROLE_SESSION_NAME_VALUE: " + v)
+else:
+ print("ROLE_SESSION_NAME_VALUE: not-present")
+
+
+
diff --git a/aws_google_saml/saml-response.xml b/aws_google_saml/saml-response.xml
new file mode 100644
index 0000000..d53bbb9
--- /dev/null
+++ b/aws_google_saml/saml-response.xml
@@ -0,0 +1,74 @@
+
+
+ https://accounts.google.com/o/saml2?idpid=C00s6b4ae
+
+
+
+
+
+
+
+
+
+
+ PEMJNGR9h6N+Ae6z0r6t+hOe7KHZZaArBcruvXIvN/s=
+
+
+ cr95LXs4vcEet3QLpPwTzqvz/eXFN8padmt2vcHb2MM20QCyzqeZJKCU6OUAn+GqIm6xuYjYPJ7w
+iV2F9eVtJ9vpH3RK0lMRUpMHhH0Wl9w7GUtfVNQ9SEy4TqbmatmKNLL7SRDkCf/qKD95piH4Cz1x
+/tnZj1QNv4SeufUP5oPzL/86KuNOKFYDdr78ANMwi0Y4jrqbiwpta3z4h5tTbB/OuIfS8Ccrj7up
+Ha1+lWS5m4EOWfte44/pyMpjrHhDh9PoWeq6fI8i+4INfo5i3D0s8K0ZO7g5cyotM3wGdnVYZ8z0
+9wwK25rqEuXSKwLImqxZbpEpAuENrs6RjVRcuA==
+
+
+ ST=California,C=US,OU=Google For Work,CN=Google,L=Mountain View,O=Google Inc.
+ MIIDdDCCAlygAwIBAgIGAZAnLlJYMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTC0dvb2dsZSBJ
+bmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGDAWBgNVBAsTD0dv
+b2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjQwNjE3
+MTcxMTA1WhcNMjkwNjE2MTcxMTA1WjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMN
+TW91bnRhaW4gVmlldzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAwtQfziZzGOKbUVp4NeEypAzgDVqFu/NdMzxk/XCkHlfAZRwlbnP7FjBDUuzcZ69m
+VgeX827UQjutKN33LZWvMPnXhWaPsMUDrWQHSK0KTrOPU99AF2uFvKN9nUgey4SyNd+f/VVvFHfk
+B9sjkYYcfOwYXnDylNBTAJJRdhBB3xTtBdIMKP+bGsEPnCFMMeni8l92VhK035k/lGdvJCmP/+9Q
+Lyhl9qah6B07DcmHIgKDtqDL9wxoI0ZzmOIpvfPDyNxaHMeznJ+2l7BhkHchhQsqsXmchwcf8RlW
+VU6NRJkzQ8c3NDHEf1BiujeBHtyu7R0lQxrXJjJeHOnTnoUxxwIDAQABMA0GCSqGSIb3DQEBCwUA
+A4IBAQAqyG0fwJ/Enn5xy3aeCR2LFLzinZZXxfb0MKjesUFfdctpNI5le6h/l1f7cDt1018SIzO0
+OyLo4AZEm5SGn4/ZMvOlDrnOiR9epa/xSLlk372HMCfpRMzG63RilFYiE5nn/jTdu9A1I4WwgVND
+SSt0a36IW43Zsx4ZRqG1tRZmf5uVKanKF2u00h80wXniS837u7mX+AH/GItyqK8xW4+u9LVuWsC+
+AC5OdBm53LSRwB+NH++SV9TaNqmsOQTsBYWcmv1L26d5ni/J5I1YI002dO7rBIxzURxdcHcPwxbz
+iFyI0D6oarxHqk+IsrrMoq0OaDQvyhRPXCtxnYtMGvfL
+
+
+
+
+
+
+
+ https://accounts.google.com/o/saml2?idpid=C00s6b4ae
+
+ daniel@ideastoaction.com
+
+
+
+
+
+
+ urn:amazon:webservices
+
+
+
+
+ arn:aws:iam::572029606692:role/ITAAdmin,arn:aws:iam::572029606692:saml-provider/GoogleWorkspace
+
+
+ daniel@ideastoaction.com
+
+
+
+
+ urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified
+
+
+
+