I am having trouble setting up a firewall. I am using beta4 so far. Here is my security.yml:
[code] security: providers: user_db: entity: { class: mytest\TestBundle\Entity\Account, property: email } encoders: mytest\TestBundle\Entity\Account: plaintext role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] firewalls: secured_area: pattern: ^/ticket stateless: true security: true http_basic: realm: "Secured Demo Area" provider: user_db access_control: #- { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } [/code] As far as I understand so far, I request the lookup to be done using the e-mail field of the entity "Account" and check the password using plaintext storage. So here is my Account class: [code] namespace mytest\TestBundle\Entity; use Doctrine\ORM\Mapping as orm; use Symfony\Component\Security\Core\User\UserInterface; /** @orm\Entity @orm\Table(name="accounts") */ class Account implements UserInterface /*extends BaseUser*/ { /** @orm\Id @orm\Column(type="integer") @orm \GeneratedValue(strategy="AUTO") */ protected $id; /** @orm\Column(type="string", length=100) */ protected $email; /** @orm\Column(type="string", length=16, nullable=true) */ protected $login; /** @orm\Column(type="string", length=255) */ protected $password; /** @orm\Column(type="string", length=20) */ private $nameFirst; /** @orm\Column(type="string", length=20) */ private $nameLast; /** @orm\Column(type="datetime", nullable=true) */ protected $createdAt; /** @orm\Column(type="datetime", nullable=true) */ protected $updatedAt; public function getUsername() { return $this->login; } public function getSalt() { return "123"; } public function eraseCredentials() {} public function getRoles() { return array(new Role('ROLE_USER')); } public function equals(UserInterface $user) { if (!$user instanceof Users) { return false; } return (trim(mb_strtolower($user->email)) == trim(mb_strtolower($this->email))); } } [/code] When I try to request the http://hostname/app_dev.php/ticket resource I get an http_basic popup from my browser, I enter a users e-mail and the (in plaintext in the db stored) password and all I get is [code] Authentication request failed: The presented password is invalid. [/code] which is odd considering I am requesting a comparison with the database password which is a plaintext string. after seeing this, I googled a bit, then I googled some more and then some and made the following change: security.yml: [code] encoders: mytest\TestBundle\Entity\Account: algorithm: sha1 encode-as-base64: false iterations: 1 [/code] which basically tells to use hashing with sha1, without encoding as base64 on the database. Since the whole procedure requires a salt, now the function getSalt *SHOULD* be used so the final stored password in the database should be "password123". I moddified the database record to store the password as "cbfdac6008f9cab4083784cbd1874f76618d2a97" (which is what I get using hash('sha1', 'password123'); Now when I try to authenticate using the password 'password' I *STILL* get the error: [code] Authentication request failed: The presented password is invalid. [/code] which is getting me to a dead end... What am I doing wrong? How can I solve this? -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en