なんかうまくいかないんご
gsuiteサイトからADFSへのsamlリクエストをURLデコードした結果が書きのとおり
■admin.google.comにログイン済みの場合? ----①
?SAMLRequest=
fVJNTxsxEL0j9T9Yvu9HorYKVnZRCkJEomVFlh56m3gnGzfe8eLxJuXf42xAwKHcrOfn9zGe+cW/zoo9ejaOCjlJcymQtGsMtYV8qK+Tmbwov5zNGTrbq8UQtnSPjwNyEPElsRovCjl4Ug7YsCLokFXQarX4eaumaa5674LTzkqxvCqkWcMOcAekoXFEjv72a2sbiIcGCDTqLdr1rpXi92us6THWknnAJXEAChHKJ7Mk/5pMZ3X+XeXn6tvsjxTVi9MPQ6cGn8Van0isbuq6Sqq7VT0K7E2D/ldkF7J1rrWYatcd7StgNvsIb8AySrFgRh9iwEtHPHToV+j3RuPD/W0htyH0rLLscDikbzIZZG2UgMYjdKmhjctAsyzH8aqxoX8318/zw6u/LN8c5tk7qfLl245tlleVs0Y/iYW17nAZA4RYJfghNrl2voPwf7dJOhkR0ySbkaoG4h612RhspMjKk+vH/Yhb8ww=
&RelayState=https://accounts.google.com/CheckCookie
?continue=
https://admin.google.com/giveadream.info/Dashboard&service=CPanel&hl=ja&checkedDomains=youtube&checkConnection=youtube:752:1&pstMsg=1&skipvpage=true
■SPinitiatedSAMLで、https://gsuite.google.comにログインを試みた場合 ----②
?SAMLRequest=
fVLLTsMwELwj8Q+R73lVSFRWE1SKKioViNrAgZubOOmSeB28Tgt/j5tSAQd6Hc/OY72Tmw/VejtpCDQmLA4i5kksdAlYJ+w5n/tjdpNeXkxIqLbj095ucSXfe0nWc5NIfHhIWG+Qa0FAHIWSxG3B19OHJR8FEe+MtrrQLfMWdwkDxEa/KVFptdnWgG9lXTqlDTbQ1E1TA5QVdFvHfjnFGh1iLYh6uUCyAq2DonjsR1f+aJxH1zyOeBS9Mi/7droFPDY4F2tzJBG/z/PMz57W+SCwg1KaR8dOWK113cqg0Opgnwki2Dm4Ei1J5k2JpLEu4Ewj9UqatTQ7KOTzapmwrbUd8TDc7/fBj0wowtpJiNJIoQLASoeiIJYO6+VDQ/Nrr+fzi5M/S38cJuEvqfT72w5tFneZbqH49KZtq/czF8C6Ktb0rslcGyXs/25xEA8IlH41UHmP1MkCKpAl88L06Pr3PtzVfAE=
&RelayState=https://www.google.com/a/giveadream.info/ServiceLogin
?service=
mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1<mpl=default<mplcache=2&emr=1&osid=1#
gsuiteとは別のSPで試した場合は、上記のようなgetクエリの第二変数「cotiune」や「service」はなかったのに、gsuiteはくっつけてリクエストしてくる。
また、上記のような「&RelayState」句はついていなかった。
上記の①の青文字部分だけをsamlエンコードした結果は、
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="ibakaekancadonnonjpblldaonjdanacechelbkg" Version="2.0" IssueInstant="2018-04-28T06:09:58Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" ProviderName="google.com" IsPassive="false"AssertionConsumerServiceURL="https://www.google.com/a/giveadream.info/acs">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">google.com</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
</samlp:AuthnRequest>
上記の②の青文字部分だけをsamlエンコードした結果は、
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="innkojmafombhginjdgdmlnbnkikgkkgiidfiphl" Version="2.0" IssueInstant="2018-04-28T07:10:00Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" ProviderName="google.com" IsPassive="false"AssertionConsumerServiceURL="https://www.google.com/a/giveadream.info/acs">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">google.com</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
</samlp:AuthnRequest>
いずれもADFSのエラーページに遷移してログイン失敗になったんご
ADFSのログは下記の通り
---------------- ここからエラー内容 ----------------
パッシブな要求のフェデレーション中にエラーが発生しました。
追加データ
プロトコル名:
Saml
証明書利用者:
google.com
例外情報:
System.UriFormatException: 無効な URI: URI の形式を決定できませんでした。
場所 System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
場所 Microsoft.IdentityServer.Web.Protocols.Saml.SamlSignInContext.Validate()
場所 Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.GetRequiredPipelineBehaviors(ProtocolContext pContext)
場所 Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)
---------------- ここまでエラー内容 ----------------
まったく意味が分からへんwww
結局下記がわかんない
1.samlプロトコル
・samlリクエストにくっつけられるパラメータ(タグと要素と属性)の種類と仕様
・samlレスポンスにくっつけられるパラメータの種類と仕様
2.samlプロダクト(IDPとSPの両方)ごとの仕様
■SPごとにsamlリクエストにくっつけて送るパラメータの種類
・gsuiteがしゃべってるsamlリクエストの各パラメータはどんなか?(上記参照)
・samlリクエストのパラメータにはどんな種類と組み合わせがあるのか?
・gsuiteなどの各SPごとにsamlリクエストのうちどのパラメータをくっつけて送る仕様なのか?
■IDPごとに処理できるsamlリクエストにくっついてるパラメータの種類
■IDPごとにsamlレスポンスにくっつけて送るパラメータの種類
■SPごとに処理できるsamlレスポンスにくっついてるパラメータの種類
結局これを読むしかないのか?
・saml2.0
http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html
・xml1.0