{"action":"created","issue":{"url":"https://api.github.com/repos/ctripcorp/apollo/issues/1562","repository_url":"https://api.github.com/repos/ctripcorp/apollo","labels_url":"https://api.github.com/repos/ctripcorp/apollo/issues/1562/labels{/name}","comments_url":"https://api.github.com/repos/ctripcorp/apollo/issues/1562/comments","events_url":"https://api.github.com/repos/ctripcorp/apollo/issues/1562/events","html_url":"https://github.com/ctripcorp/apollo/pull/1562","id":369602455,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIyNTA1NzEx","number":1562,"title":"add active directory support","user":{"login":"codepiano","id":2015631,"node_id":"MDQ6VXNlcjIwMTU2MzE=","avatar_url":"https://avatars1.githubusercontent.com/u/2015631?v=4","gravatar_id":"","url":"https://api.github.com/users/codepiano","html_url":"https://github.com/codepiano","followers_url":"https://api.github.com/users/codepiano/followers","following_url":"https://api.github.com/users/codepiano/following{/other_user}","gists_url":"https://api.github.com/users/codepiano/gists{/gist_id}","starred_url":"https://api.github.com/users/codepiano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codepiano/subscriptions","organizations_url":"https://api.github.com/users/codepiano/orgs","repos_url":"https://api.github.com/users/codepiano/repos","events_url":"https://api.github.com/users/codepiano/events{/privacy}","received_events_url":"https://api.github.com/users/codepiano/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":15,"created_at":"2018-10-12T15:33:01Z","updated_at":"2018-11-27T14:05:33Z","closed_at":"2018-10-30T15:12:31Z","author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/ctripcorp/apollo/pulls/1562","html_url":"https://github.com/ctripcorp/apollo/pull/1562","diff_url":"https://github.com/ctripcorp/apollo/pull/1562.diff","patch_url":"https://github.com/ctripcorp/apollo/pull/1562.patch"},"body":"## 功能\r\n\r\n现有的 ldap 实现不支持 active directory，并且需要用户自行更改代码，编译 portal，因此计划提供对 active direcotry 的支持，并且支持动态绑定，用户只需更改配置文件即可接入。\r\n\r\n1. 添加 ldap 对 active directory 的支持\r\n1. 通过配置更改 ldap 属性绑定，不用再自行编译 portal\r\n\r\n## 变更\r\n\r\n### ldap 认证方式\r\n\r\n修改了认证过程，不再通过比对密码的形式，改用 bind 形式去认证身份，流程如下：\r\n\r\n1. 使用配置的 ldap 管理账户调用 bind，验证管理员账户密码是否正常\r\n1. 使用管理员账户，根据 id，搜索要登录用户，查看用户是否存在\r\n1. 查询到用户以后，获得用户的 full DN\r\n1. 使用用户的 DN，调用 bind，去用户的密码去认证用户身份\r\n\r\n### 动态绑定流程\r\n\r\n修改了原有的查询用户方式，通过配置文件填写用户id、显示名、邮箱在 ldap 里面的对应属性，使用管理员账号，通过查询语句去获得用户的属性值。\r\n\r\n## 新增功能\r\n\r\n配置 ldap 标准的 memberOf 过滤器，只允许某些组的用户访问\r\n\r\n## 配置文件说明\r\n\r\n```yaml\r\nspring:\r\n  ldap:\r\n    base: \"dc=example,dc=com\"\r\n    username: \"admin\"\r\n    password: \"passwod\"\r\n    searchFilter: \"(sAMAccountName={0})\"  # 用户过滤器，登录的时候用这个过滤器来搜索用户\r\n    urls:\r\n    - \"ldap://1.1.1.1:389\"\r\n\r\nldap:\r\n  mapping: # 配置 ldap 属性\r\n    objectClass: \"user\" # ldap 用户 objectClass 配置\r\n    loginId: \"sAMAccountName\" # ldap 用户惟一 id，用来作为登录的 id\r\n    userDisplayName: \"cn\" # ldap 用户名，用来作为显示名\r\n    email: \"userPrincipalName\" # ldap 邮箱属性\r\n  filter: # 配置过滤，目前只支持 memberOf\r\n    memberOf: \"CN=ServiceDEV,OU=test,DC=example,DC=com|CN=WebDEV,OU=test,DC=example,DC=com\" # 只允许 memberOf 属性为 ServiceDEV 和 WebDEV 的用户访问\r\n```    \r\n\r\n## 目前状态\r\n\r\nactive directory 的方式测试通过，已经开始使用\r\n原始的 ldap 方式，因为没有测试环境，所以需要找人帮忙进行测试"},"comment":{"url":"https://api.github.com/repos/ctripcorp/apollo/issues/comments/442069688","html_url":"https://github.com/ctripcorp/apollo/pull/1562#issuecomment-442069688","issue_url":"https://api.github.com/repos/ctripcorp/apollo/issues/1562","id":442069688,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0MjA2OTY4OA==","user":{"login":"dean-hu","id":16026242,"node_id":"MDQ6VXNlcjE2MDI2MjQy","avatar_url":"https://avatars2.githubusercontent.com/u/16026242?v=4","gravatar_id":"","url":"https://api.github.com/users/dean-hu","html_url":"https://github.com/dean-hu","followers_url":"https://api.github.com/users/dean-hu/followers","following_url":"https://api.github.com/users/dean-hu/following{/other_user}","gists_url":"https://api.github.com/users/dean-hu/gists{/gist_id}","starred_url":"https://api.github.com/users/dean-hu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dean-hu/subscriptions","organizations_url":"https://api.github.com/users/dean-hu/orgs","repos_url":"https://api.github.com/users/dean-hu/repos","events_url":"https://api.github.com/users/dean-hu/events{/privacy}","received_events_url":"https://api.github.com/users/dean-hu/received_events","type":"User","site_admin":false},"created_at":"2018-11-27T14:05:33Z","updated_at":"2018-11-27T14:05:33Z","author_association":"NONE","body":"> ## 功能\r\n> 现有的 ldap 实现不支持 active directory，并且需要用户自行更改代码，编译 portal，因此计划提供对 active direcotry 的支持，并且支持动态绑定，用户只需更改配置文件即可接入。\r\n> \r\n> 1. 添加 ldap 对 active directory 的支持\r\n> 2. 通过配置更改 ldap 属性绑定，不用再自行编译 portal\r\n> \r\n> ## 变更\r\n> ### ldap 认证方式\r\n> 修改了认证过程，不再通过比对密码的形式，改用 bind 形式去认证身份，流程如下：\r\n> \r\n> 1. 使用配置的 ldap 管理账户调用 bind，验证管理员账户密码是否正常\r\n> 2. 使用管理员账户，根据 id，搜索要登录用户，查看用户是否存在\r\n> 3. 查询到用户以后，获得用户的 full DN\r\n> 4. 使用用户的 DN，调用 bind，去用户的密码去认证用户身份\r\n> \r\n> ### 动态绑定流程\r\n> 修改了原有的查询用户方式，通过配置文件填写用户id、显示名、邮箱在 ldap 里面的对应属性，使用管理员账号，通过查询语句去获得用户的属性值。\r\n> \r\n> ## 新增功能\r\n> 配置 ldap 标准的 memberOf 过滤器，只允许某些组的用户访问\r\n> \r\n> ## 配置文件说明\r\n> ```yaml\r\n> spring:\r\n>   ldap:\r\n>     base: \"dc=example,dc=com\"\r\n>     username: \"admin\"\r\n>     password: \"passwod\"\r\n>     searchFilter: \"(sAMAccountName={0})\"  # 用户过滤器，登录的时候用这个过滤器来搜索用户\r\n>     urls:\r\n>     - \"ldap://1.1.1.1:389\"\r\n> \r\n> ldap:\r\n>   mapping: # 配置 ldap 属性\r\n>     objectClass: \"user\" # ldap 用户 objectClass 配置\r\n>     loginId: \"sAMAccountName\" # ldap 用户惟一 id，用来作为登录的 id\r\n>     userDisplayName: \"cn\" # ldap 用户名，用来作为显示名\r\n>     email: \"userPrincipalName\" # ldap 邮箱属性\r\n>   filter: # 配置过滤，目前只支持 memberOf\r\n>     memberOf: \"CN=ServiceDEV,OU=test,DC=example,DC=com|CN=WebDEV,OU=test,DC=example,DC=com\" # 只允许 memberOf 属性为 ServiceDEV 和 WebDEV 的用户访问\r\n> ```\r\n> \r\n> ## 目前状态\r\n> active directory 的方式测试通过，已经开始使用\r\n> 原始的 ldap 方式，因为没有测试环境，所以需要找人帮忙进行测试\r\n\r\n请问按照这种方式接入ladp\r\n能支持apollo的权限体系吗"}}
{"actor":{"display_login":"dean-hu"}}