登陆是一个最常见的功能,但是其实登陆这一件事情也非常复杂。
关于登陆的发展历史,参见:《登陆的轮子,你还在造?》

添加应用时可选择为其配置协议,协议包括 OAuth 2.0,LDAP 和 HTTP,用户可多选。

第三方应用接入 - 图1

OAuth 2.0

OAuth 2.0 是一个关于授权的开放网络协议,它允许用户让第三方网站访问该用户在某一网站上存储的信息和资源,如账户信息,照片,联系人等,而不需要给第三方网站提供某一网站上的账户和密码。

在ArkID的 OAuth 2.0 配置中,需要选择 client_type (自身的客户端类型)和authorization_grant_type (许可类型),填写 redirect_uris (重定向端点地址)。

客户端类型

**
Public(公开)
此类客户端没有能力保存自身的凭据(clientsecret 或用户名与口令),如基于浏览器的 Web 应用或本 地应用。
_Confidential(机密)

此类客户端有责任且有能力安全地保存自身的凭据,如配置正确的服务端应用。

许可类型

**
Authorization-code(Authorization Code Grant:授权码许可)
该许可类型功能最为完整、最为常见且安全,它要求客户端首先在授权端点获得授权码作为授权许可, 然后在令牌端点凭授权码换取令牌。
implicit(Implicit Grant:隐式许可)
该许可类型在授权端点直接签发令牌而不使用授权码,但不签发刷新令牌(Refresh Token)以防止滥 用。因此可以认为该类型的授权许可是「隐式」的。公开客户端仅可使用以上两类许可流程进行授权。
password(Resource Owner Password Credentials Grant:资源所有者口令凭据许可)
该许可类型直接使用资源所有者的用户名与口令在令牌端点换取令牌,仅适用于授权服务器高度信任客 户端的情况。即使在此种情况下,客户端也不应该保存资源所有者的凭据,而是通过长时效的访问令牌 或刷新令牌取而代之。
client(Client Credentials Grant:客户端凭据许可)
该许可类型面向客户端是被信任的机器而不涉及人类用户的情况,因为机密客户端访问令牌端点需经身 份认证,使用此种许可类型的客户端可以在令牌端点直接换取令牌。

redirect_uris(重定向端点地址或回调地址)

**
用户在通过ArkID来访问第三方应用的时候,完成ArkID对第三方应用授权以后跳转到的地址。 回调地址是 已按OAuth2.0协议实现回调逻辑的URL,形如: “https://noah.demo.longguikeji.com/arkid/oauth/callback

相关问题可参考:https://tools.ietf.org/html/rfc6749

LDAP

LDAP(Lightweight Dire ctory Access Protocal)并不是一种被专门设计用来实现鉴权/授权活动的协议。它是 X.500 计算机目录服务协议族中的一员,而 X.500 协议族的目的是用于实现电子化的个人信息统一名录服务。具体来讲,X.500 服务提供了通过国家、组织以及姓名等方式快速的检索一个人的地址、电话等信息的方式,这些结构化的信息以树形结构存储在实现了 X.500 协议的被称作「目录数据库」的服务中,它是一种专门为大量的目录检索操作而优化的特殊数据库。

因用户的登录信息同样可以通过类似的方式管理,LDAP 协议也被大量用于单点登录技术中。在单点登录的场景下,第三方应用将直接从ArkID所提供的 LDAP服务器中查询用户的账号信息并进行验证,并不涉及任何复杂的授权过程。

在ArkID中 LDAP 不需要配置,可以直接添加使用。

OAuth 2.0 和 LDAP 应用场景比较

OAuth 2.0用于 web 应用的单点登录。对第三方应用进行授权以后,用户直接以被授权的身份登录到第三方应用,不需要输入账号密码。

LDAP 相较于 OAuth 2.0 的应用场景更加广泛,其不光支持 web 上的应用程序,也非 web 形式的应用。使用 LDAP 实现统一认证,在进入第三方应用的登录界面时仍需要输入账号密码,但账号密码要与ArkID登录的账号密码一致(即使用登录ArkID的身份登录)。

HTTP

在ArkID中接口以HTTP形式暴露,方便用户进行二次开发。用户只需要添加该协议即可,不需要额外参数。