{"action":"created","issue":{"url":"https://api.github.com/repos/mar10/wsgidav/issues/137","repository_url":"https://api.github.com/repos/mar10/wsgidav","labels_url":"https://api.github.com/repos/mar10/wsgidav/issues/137/labels{/name}","comments_url":"https://api.github.com/repos/mar10/wsgidav/issues/137/comments","events_url":"https://api.github.com/repos/mar10/wsgidav/issues/137/events","html_url":"https://github.com/mar10/wsgidav/issues/137","id":384010145,"node_id":"MDU6SXNzdWUzODQwMTAxNDU=","number":137,"title":"hash comparison for digest auth [enhancement]","user":{"login":"jaredrunyon","id":15653114,"node_id":"MDQ6VXNlcjE1NjUzMTE0","avatar_url":"https://avatars3.githubusercontent.com/u/15653114?v=4","gravatar_id":"","url":"https://api.github.com/users/jaredrunyon","html_url":"https://github.com/jaredrunyon","followers_url":"https://api.github.com/users/jaredrunyon/followers","following_url":"https://api.github.com/users/jaredrunyon/following{/other_user}","gists_url":"https://api.github.com/users/jaredrunyon/gists{/gist_id}","starred_url":"https://api.github.com/users/jaredrunyon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaredrunyon/subscriptions","organizations_url":"https://api.github.com/users/jaredrunyon/orgs","repos_url":"https://api.github.com/users/jaredrunyon/repos","events_url":"https://api.github.com/users/jaredrunyon/events{/privacy}","received_events_url":"https://api.github.com/users/jaredrunyon/received_events","type":"User","site_admin":false},"labels":[{"id":965100942,"node_id":"MDU6TGFiZWw5NjUxMDA5NDI=","url":"https://api.github.com/repos/mar10/wsgidav/labels/authentication","name":"authentication","color":"d4c5f9","default":false},{"id":71774699,"node_id":"MDU6TGFiZWw3MTc3NDY5OQ==","url":"https://api.github.com/repos/mar10/wsgidav/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2018-11-24T18:15:26Z","updated_at":"2018-12-09T21:13:41Z","closed_at":"2018-12-09T21:13:41Z","author_association":"CONTRIBUTOR","body":"Hello @mar10 ,\r\n\r\nI am currently in the process of writing custom interfaces for providers, domains, and locks.\r\n\r\nI am currently working on the custom domain controller. However I am not going to have access to the users passwords in plain text. I will however have access to an MD5 hash stored in a users table with the user name. I have already forked the repo (and submitted a PR for previous digest auth bug fix), and am willing to add this feature to the product (if it does not exist) as well.\r\n\r\nI do see where we are grabbing the MD5 hash from the digest auth request and could easily pass it to an interface method (if the configuration is set in the proposed `http_authenicator` setting). The interface method could look up the hash that is stored somewhere and return the hash instead of calling the `compute_digest_response` in `http_authenticator.py` line 433. Then the next line of code after this is the hash comparsion. \r\n\r\nPROPOSED SOLUTION (architecture):\r\n* new optional setting for digest_auth_hash_comparsion in `http_authenticator` that is passed into the server config (default=False).\r\n* new optional interface method for `DomainController (http_authenticator.domain_controller)`\r\n* if setting is enabled and interface method is implemented then fetch hash from new interface method for passed in `username` instead of calling the `compute_digest_response` method based off of the `user_mapping`\r\n\r\nI am referencing the wsgidav module in a virtual env within my own project and am hoping to not have to override any of the module code (just pip3 install all day and reference). \r\n\r\nI also think that hash comparison would be a great bonus to the product for enterprise level software use cases. \r\n\r\nLet me know  your thoughts (if you are interested in this enhancement),\r\n\r\nJR"},"comment":{"url":"https://api.github.com/repos/mar10/wsgidav/issues/comments/445572255","html_url":"https://github.com/mar10/wsgidav/issues/137#issuecomment-445572255","issue_url":"https://api.github.com/repos/mar10/wsgidav/issues/137","id":445572255,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0NTU3MjI1NQ==","user":{"login":"mar10","id":41663,"node_id":"MDQ6VXNlcjQxNjYz","avatar_url":"https://avatars3.githubusercontent.com/u/41663?v=4","gravatar_id":"","url":"https://api.github.com/users/mar10","html_url":"https://github.com/mar10","followers_url":"https://api.github.com/users/mar10/followers","following_url":"https://api.github.com/users/mar10/following{/other_user}","gists_url":"https://api.github.com/users/mar10/gists{/gist_id}","starred_url":"https://api.github.com/users/mar10/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mar10/subscriptions","organizations_url":"https://api.github.com/users/mar10/orgs","repos_url":"https://api.github.com/users/mar10/repos","events_url":"https://api.github.com/users/mar10/events{/privacy}","received_events_url":"https://api.github.com/users/mar10/received_events","type":"User","site_admin":false},"created_at":"2018-12-09T21:13:41Z","updated_at":"2018-12-09T21:13:41Z","author_association":"OWNER","body":"Will be part of next release"}}
{"actor":{"display_login":"mar10"}}