Strange Saml login

Below is my gitlab.rb

 gitlab_rails['omniauth_enabled'] = true
 gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
 gitlab_rails['omniauth_block_auto_created_users'] = false
 gitlab_rails['omniauth_auto_link_saml_user'] = true

gitlab_rails['omniauth_providers'] = [
    name: 'saml',
    args: {
             assertion_consumer_service_url: '',
             idp_cert_fingerprint: 'F9:9F:73:9D:86:69:16:D2:12:9C:9F:B1:98:D6:3D:1C:59:42:DB:BC',
             idp_sso_target_url: '',
             issuer: '',
             name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
             attribute_statements: { email: ['urn:oid:'] }
    label: 'saml' # optional label for SAML login button, defaults to "Saml"

I have a app name MyIdp and my account email, then use gitlab as sp. then I found a strange thing

below are my steps:

  1. assign gitlab to, which not registered in gitlab
  2. then login in gitlab from MyIdp, it will be ok and gitlab will create new user which email is
  3. login out gitlab , login in with which have registered, then login in gitlab from MyIdp, now
    The mailbox displayed by gitlab is instead of

The correct situation should be that gitlab displays the mailbox passed by idp instead of an account that has already logged into gitlab.

Am i miss something or the saml of gitlab is just like this? Can anyone help?