2016-07-08 2 views
-1

나는 Symfony에 앱을 가지고 있습니다. 사용자는 FOS와 Oauth를 사용하여 로그인합니다. 이제 활성 디렉토리를 사용하여 로그인하는 옵션을 추가해야합니다. 그래서이 번들을 설치했는데 : https://github.com/Maks3w/FR3DLdapBundle하지만 여전히 작동하도록 구성 할 수는 없습니다. 내 설정 및 보안 파일을 게시하고 있습니다. 어떤 아이디어를 바꿔야합니까?Symfony2, FosUserBundle, Oauth, FR3DLdapBundle

security.yml

security: 

    erase_credentials: false 

    encoders: 
    FOS\UserBundle\Model\UserInterface: sha512 
    #FOS\UserBundle\Model\UserInterface: plaintext 
    FR3D\LdapBundle\User\LdapUser: plaintext 
    providers: 
    chain_provider: 
     chain: 
     providers: [fos_userbundle, fr3d_ldapbundle] 
    fr3d_ldapbundle: 
     id: fr3d_ldap.security.user.provider 
    fos_userbundle: 
     id: fos_user.user_provider.username_email 

    role_hierarchy: 
    ROLE_USER: ~ 
    ROLE_ADMIN: [ROLE_USER] 
    ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

    firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    doc: 
     pattern: ^/api/doc/$ 
     security: false 

    oauth_token: 
     pattern: ^/oauth/v2/token 
     security: false 

    passwords: 
     pattern: ^/api/password 
     security: false 

    # Poniżej są metory autoryzacji. 
    oauth_authorize: 
     pattern: ^/site|^/fos|^/api 
     fr3d_ldap: ~ 
     fos_oauth: true 
     form_login: 
     provider: fos_userbundle 
     check_path: /fos/login_check 
     login_path: /fos/login 
     logout: 
     path: /fos/logout 
     target:/
     anonymous: true 

    access_control: 
    - { path: ^/oauth/v2/auth_login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/api/users/[0-9]+/(avatar|wallpaper), roles: [ IS_AUTHENTICATED_FULLY ] } 
    - { path: ^/api/users, roles: [ ROLE_ADMIN ], methods: [POST, PUT] } 
    - { path: ^/api/groups, roles: [ ROLE_ADMIN ], methods: [POST, PUT] } 
    - { path: ^/api/menus, roles: [ ROLE_ADMIN ], methods: [POST, PUT] } 
    - { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] } 
    - { path: ^/ /, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

config.yml

imports: 
    - { resource: parameters.yml } 
    - { resource: security.yml } 
    - { resource: doctrine_extensions.yml } 
    - { resource: services.yml } 

framework: 
    #esi:  ~ 
    #translator: { fallback: "%locale%" } 
    secret:  "%secret%" 
    router: 
    resource: "%kernel.root_dir%/config/routing.yml" 
    strict_requirements: ~ 
    form:  ~ 
    csrf_protection: ~ 
    validation: { enable_annotations: true } 
    templating: 
    engines: ['twig'] 
    #assets_version: SomeVersionScheme 
    default_locale: "%locale%" 
    trusted_hosts: ~ 
    trusted_proxies: ~ 
    session: 
    # handler_id set to null will use default session handler from php.ini 
    handler_id: ~ 
    fragments:  ~ 
    http_method_override: true 

# Twig Configuration 
twig: 
    debug:  "%kernel.debug%" 
    strict_variables: "%kernel.debug%" 

# Assetic Configuration 
assetic: 
    debug:  "%kernel.debug%" 
    use_controller: false 
    bundles: [ ] 
    #java: /usr/bin/java 
    filters: 
    cssrewrite: ~ 
    #closure: 
    # jar: "%kernel.root_dir%/Resources/java/compiler.jar" 
    #yui_css: 
    # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar" 

# Doctrine Configuration 
doctrine: 
    dbal: 
    default_connection: default 
    connections: 
     default: 
     driver: "%database_driver%" 
     host: "%database_host%" 
     port: "%database_port%" 
     dbname: "%database_name%" 
     user: "%database_user%" 
     password: "%database_password%" 
     charset: UTF8 
     axp: 
     driver_class: Realestate\MssqlBundle\Driver\PDODblib\Driver 
#driver: "%database_driver2%" 
     host: "%database_host2%" 
     #server: "%database_host2%" 
     #port: "%database_port2%" 
     #dbname: "%database_name2%" 
     user: "%database_user2%" 
     password: "%database_password2%" 
     #charset: UTF8 

    orm: 
    default_entity_manager: default 
    entity_managers: 
     default: 
     connection: default 
     auto_mapping: true 
     axp: 
     connection: axp 
     mappings: 
      XtrdAxpPeopleBundle: ~ 

    auto_generate_proxy_classes: "%kernel.debug%" 


# Swiftmailer Configuration 
swiftmailer: 
    transport: "%mailer_transport%" 
    host: "%mailer_host%" 
    username: "%mailer_user%" 
    password: "%mailer_password%" 
    spool: { type: memory } 


fos_rest: 
    serializer: 
    serialize_null: true 
    routing_loader: 
    default_format: json 
    param_fetcher_listener: true 
    body_converter: 
    enabled: true 
    validate: true 
    body_listener: 
    array_normalizer: fos_rest.normalizer.camel_keys 
    decoders: 
     json: fos_rest.decoder.jsontoform 
    format_listener: 
    rules: 
     - { path: ^/api, priorities: [ html, json, xml ], fallback_format: html, prefer_extension: true } 
     - { path: ^/axp, priorities: [ html, json, xml ], fallback_format: html, prefer_extension: true } 
     - { path: ^/, priorities: [ html ], fallback_format: html, prefer_extension: false } 
    view: 
    serialize_null: true 
    view_response_listener: force 
    failed_validation: HTTP_UNPROCESSABLE_ENTITY 
    formats: 
     json: true 
     xml: true 


nelmio_cors: 
    defaults: 
    allow_credentials: false 
    allow_origin: [ 'http://localhost:4200' ] 
    allow_headers: [] 
    allow_methods: [] 
    expose_headers: [] 
    max_age: 0 
    hosts: [] 
    paths: 
    '^/': 
     origin_regex: true 
     allow_origin: ['^http://localhost:[0-9]+', '^http://.*.Xtrd.com', '^http://localhost:8000+'] 
     allow_headers: ['*'] 
     allow_methods: ['POST', 'PUT', 'GET', 'DELETE', 'OPTIONS'] 
     max_age: 3600 

fos_oauth_server: 
    db_driver: orm 
    client_class: Xtrd\IntranetApiBundle\Entity\Client 
    access_token_class: Xtrd\IntranetApiBundle\Entity\AccessToken 
    refresh_token_class: Xtrd\IntranetApiBundle\Entity\RefreshToken 
    auth_code_class: Xtrd\IntranetApiBundle\Entity\AuthCode 
    service: 
    user_provider: fos_user.user_manager 
    #user_provider: fr3d_ldap.security.user.provider 

fos_user: 
    db_driver: orm 
    firewall_name: oauth_authorize 
    user_class: Xtrd\IntranetApiBundle\Entity\User 
    group: 
    group_class: Xtrd\IntranetApiBundle\Entity\Group 


parameters: 
    jms_serializer.camel_case_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy 

jms_serializer: 
    handlers: 
    datetime: 
     default_format: "c" # ISO8601 
     default_timezone: "UTC" # defaults to whatever timezone set in php.ini or via date_default_timezone_set 

    property_naming: 
    separator: 
    lower_case: false 

    metadata: 
    cache: file 
    debug: "%kernel.debug%" 
    file_cache: 
     dir: "%kernel.cache_dir%/serializer" 
    auto_detection: true 
    directories: 
     FOSUserBundle: 
     namespace_prefix: "FOS\\UserBundle" 
     path: "@XtrdIntranetApiBundle/Resources/config/serializer/fos" 
     XtrdExchangeWebServicesBundle: 
     namespace_prefix: "Xtrd\\ExchangeWebServicesBundle" 
     path: "@XtrdIntranetApiBundle/Resources/config/serializer/ews" 
     XtrdIntranetApiBundle: 
     namespace_prefix: "Xtrd\\IntranetApiBundle" 
     path: "@XtrdIntranetApiBundle/Resources/config/serializer" 

    visitors: 
    json: 
     options: 128 # json_encode options bitmask 

fr3d_ldap: 
    driver: 
    host: xtrd.com 
    #port: 389 # Optional 
    #username: # Optional 
    #password: # Optional 
# bindRequiresDn: true 
    #baseDn: DC=Xtrd,DC=com 
# accountFilterFormat: (&(uid=%s)) # Optional. sprintf format %s will be the username 
    #accountFilterFormat: (&(samaccountname=%s)) 
#  optReferrals: false # Optional 
    #useSsl: false # Enable SSL negotiation. Optional 
#  useStartTls:  true # Enable TLS negotiation. Optional 
#  accountCanonicalForm: 3 # ACCTNAME_FORM_BACKSLASH this is only needed if your users have to login with something like HOST\User 
    #accountDomainName: 
    #accountDomainNameShort: # if you use the Backslash form set both to Hostname than the Username will be converted to HOST\User 
    user: 
    baseDn: dc=xtrd,dc=com 
    filter: (&(objectClass=Person)) 
    # filter: (&(objectClass=user)) 
    attributes: 
    - { ldap_attr: samaccountname, user_method: setUsername } 
#  - { ldap_attr: userprincipalname, user_method: setUsername } 
    # - { ldap_attr: mail, user_method: setEmail } 
    # - { ldap_attr: givenname, user_method: setFirstName } 
    # - { ldap_attr: sn, user_method: setLastName } 
    # - { ldap_attr: description, user_method: setDescription } 
    # - { ldap_attr: password, user_method: setPassword } 
    #service: 
    #user_manager: fos_user.user_manager  # Overrides default user manager 
    #ldap_manager: fr3d_ldap.ldap_manager.default # Overrides default ldap manager 
+0

어떤 Symfony 버전을 사용하고 있습니까? 왜 새로운 2.8 LDAP 구성 요소를 사용하지 않습니까? http://symfony.com/blog/new-in-symfony-2-8-ldap-component – LBA

+0

2.6.11을 사용하고 있습니다. 나는 FOS를 사용하여 그래서 내가 왜 FOS를 기반으로 수업을 사용하려고하는지 thats. – BigBazooka007

답변

1

당신이 내 심포니 AD 통합 게시물을 살펴본 적이 :

https://alvinbunk.wordpress.com/2016/03/25/symfony-ad-integration/

난 당신이 사용하는 참조 REST API를 사용하므로 구성이 내 것과 약간 다를 수 있습니다. 내가 제안할만한 것은 새로운 Symphony 프로젝트를 만들고 LDAP 인증이 작동하는지 확인한 다음 AD 인증을받을 수 있는지 확인하는 것입니다.

그건 그렇고, 나는이 일을하기 위해 많은 시간을 할애해야했기 때문에 블로그 포스트가 도움이되었습니다.

+0

감사합니다. 귀하의 게시물은 매우 유용합니다. 불행히도 LDAP 사용자로 로그인 할 수 없어서 도움이되지 못했습니다. { "error": "invalid_grant", "error_description": "잘못된 사용자 이름과 암호 조합"}이 (가) 발생합니다. 내 로그인 데이터를 확인하는 간단한 PHP 스크립트를 만들었습니다 - 모든 잘 작동하므로 구성과 무언가. 내 프론트 엔드는 JS 나머지 프레임 워크를 기반으로하기 때문에 나머지 API를 사용해야합니다. – BigBazooka007

관련 문제