)]}'
{"keystone/common/ldap/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"382a6323c4e343ee98e77d59166b7592d740410a","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    def create(self, values):"},{"line_number":185,"context_line":"        if not self.allow_create:"},{"line_number":186,"context_line":"            action \u003d _(\u0027LDAP %s create\u0027) % self.options_name"},{"line_number":187,"context_line":"            raise exception.ForbiddenAction(action\u003daction)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        conn \u003d self.get_connection()"},{"line_number":190,"context_line":"        object_classes \u003d self.structural_classes + [self.object_class]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FooY%3D","line":187,"updated":"2013-01-11 19:57:17.000000000","message":"Is ForbiddenAction the correct response? ForbiddenAction indicates the user isn\u0027t authorized, but this is not allowed because of system configuration. I couldn\u0027t perform this action as an authorized user. I\u0027d expect a 400 Bad Request instead.","commit_id":"2c1785add40ef56612e4ab087bd9fe165d39d632"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"d62c34303d4211c0e1e91fde59297cc546ea5e2c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    def create(self, values):"},{"line_number":185,"context_line":"        if not self.allow_create:"},{"line_number":186,"context_line":"            action \u003d _(\u0027LDAP %s create\u0027) % self.options_name"},{"line_number":187,"context_line":"            raise exception.ForbiddenAction(action\u003daction)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        conn \u003d self.get_connection()"},{"line_number":190,"context_line":"        object_classes \u003d self.structural_classes + [self.object_class]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FoeE%3D","line":187,"in_reply_to":"AAAAM3%2F%2FooY%3D","updated":"2013-01-11 21:15:12.000000000","message":"HTTP 401 is used as \"you are neither authenticated or authorized\"; HTTP 403 is used as \"you are authenticated but not permitted to perform this action\"; HTTP 400 generally means \"your request makes no sense, please check it and try again.\" In this case, we understood the request, but it is not permitted, and thus HTTP 403 Forbidden.","commit_id":"2c1785add40ef56612e4ab087bd9fe165d39d632"}]}
