2016-01-21 31 views
0

我與裝置和後omniauth,SAML的工作,下面從https://github.com/PracticallyGreen/omniauth-saml指令和omniauth Facebook的例子https://github.com/plataformatec/devise/wiki/OmniAuth:-Overviewomniauth,SAML零值

我有一個simplesamlphp服務器上運行,使用omniauth提供的元數據,並且一切似乎都正確連接,但simplesaml服務器的響應對電子郵件,first_name,last_name和name沒有任何值。奇怪的是,它是返回電子郵件和名稱值,只是沒有在響應的有用部分(見下面 - [email protected]是電子郵件,克拉克肯特是名字)

奇怪的是我用omniauth-saml和devise-saml-authenticatable gems獲得了這些nil值,但我認爲我的simplesamlphp服務器配置正確。

從omniauth的迴應是這樣的:

#<OmniAuth::AuthHash credentials=#<OmniAuth::AuthHash> extra=#<OmniAuth::AuthHash raw_info=#<OneLogin::RubySaml::Attributes:0x007fc695850148 @attributes={"urn:oid:0.9.2342.19200300.100.1.1"=>["[email protected]"], "urn:oid:2.16.840.1.113730.3.1.241"=>["Clark Kent"], "fingerprint"=>"FINGERPRINT REMOVED"}>> info=#<OmniAuth::AuthHash::InfoHash email=nil first_name=nil last_name=nil name=nil> provider="saml" uid="_ca76f49ccb6ccce7827111ae1ff0563f534f0a4d1a">

的simplesamlphp配置是這樣的:

$metadata['http://localhost:3000/saml/users/auth/saml/metadata'] = array( 'AssertionConsumerService' => 'http://localhost:3000/saml/users/auth/saml/callback', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:email', 'simplesaml.nameidattribute' => 'email', );

我相信,有良好的價值觀在用戶數據庫,當我在IDP本身上測試身份驗證時,一切都按預期工作。

回答

0

我解決了這個問題。問題是我試圖使用不使用ldap屬性名稱的值。

我改變了SP的元數據如下

$metadata['http://localhost:3000/saml/users/auth/saml/metadata'] = array(
'AssertionConsumerService' => 'http://localhost:3000/saml/users/auth/saml/callback', 
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:email', 
'authproc' => array(
95 => array(
    'class' => 'core:AttributeMap', 
    'givenName' => 'first_name', 
    'sn' => 'last_name', 
    'mail' => 'email', 
), 
96 => array(
    'class' => 'core:AttributeLimit', 
    'email', 'first_name', 'last_name' 
), 
), 
'simplesaml.nameidattribute' => 'email', 
); 
(修改我的模型使用FIRST_NAME和LAST_NAME,而不是僅僅名稱後)