注册、身份验证和授权
当新用户注册使用文件存储或音乐发布服务时,他们会经历典型的注册过程:选择用户名、设置密码 并提供背景资料信息。此信息随后会存储在 ADAM 帐户存储中,A. Datum 托管的所有应用程序均可据此 对用户进行身份验证。图 2 显示了用于连接到 ADAM 的典型代码。
Figure 2 用于连接到 ADAM 的典型代码
const long ADS_OPTION_PASSWORD_PORTNUMBER = 6;
const long ADS_OPTION_PASSWORD_METHOD = 7;
const int ADS_PASSWORD_ENCODE_REQUIRE_SSL = 0;
const int ADS_PASSWORD_ENCODE_CLEAR = 1;
System.DirectoryServices.AuthenticationTypes AuthTypes =
AuthenticationTypes.Signing |
AuthenticationTypes.Sealing |
AuthenticationTypes.Secure;
// connect to ADAM store
System.DirectoryServices.DirectoryEntry objUsers = new DirectoryEntry(
"LDAP://10.0.0.212:389/cn=Users,dc=adamstore,dc=com",
"ADATUMadministrator","Pa$$word!",AuthTypes);
// create user object
DirectoryEntry user = objUsers.Children.Add(
"cn="+UsernameTB.Text, "user");
// set user properties
user.Properties["msDS-UserDontExpirePassword"].Value=true;
user.Properties["userPrincipalName"].Value = UsernameTB.Text;
user.CommitChanges();
// set port number, method, and password.
user.Invoke("SetOption", new object[] { ADS_OPTION_PASSWORD_PORTNUMBER,
389 });
user.Invoke("SetOption", new object[] { ADS_OPTION_PASSWORD_METHOD,
ADS_PASSWORD_ENCODE_CLEAR});
user.Invoke("SetPassword", new object[] { PasswordTB.Text });
用户在创建帐户之后,尝试访问文件存储或音乐发布服务时,Web 服务器会将其重定向到 ADFS 服务 器。然后,ADFS 服务器会提示用户输入用户名和密码,接着与 ADAM 服务器通信以验证用户的凭据并确 定组成员身份,向客户端颁发安全令牌,然后再将客户端重定向回 Web 应用程序。
安全令牌包含关于用户的身份和组成员身份的信息,这些信息称为声明。应用程序使用身份信息来确 认用户已成功通过 ADFS 服务器的验证,并使用组成员身份信息来做出授权决定。例如,仅当用户的安全 令牌中含有组声明 Musicians 时,A. Datum 的音乐应用程序才允许该用户上载音乐:
// check if the user is a Musician and therefore has write (upload)
// permission
if (!User.IsInRole("Musicians"))
{
// if the user doesn't have permission, show an error message
Response.Clear();
Response.Write("You do not have permission to upload files");
return;
}
如果用户此时想访问 A. Datum 托管的其他应用程序,则无需重新输入凭据。这是因为用户已经拥有 两个应用程序均信任的 ADFS 颁发的安全令牌。虽然 A. Datum 本可以使用其他技术为客户实现 SSO,但 是 ADFS 允许公司只需通过添加额外的帐户和资源合作伙伴即可轻松扩展其信任关系。
(编辑:云计算网_宿迁站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|