kim_identity_overview.html   [plain text]


<!-- #bbinclude "header.txt"
  #PAGETITLE#="Kerberos Identity Management: KIM Identity Overview"
  #ADDITIONALSTYLE#="@import url(doxygen.css);"
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
			"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD> 
	<BASE HREF="http://web.mit.edu/macdev/KfM/KerberosFramework/KerberosIdentityManagement/Documentation/html/kim_identity_overview.html">
  	<META NAME="keywords" CONTENT="#KEYWORDS#">
	<META NAME="description" CONTENT="#DESCRIPTION#">
	<TITLE>Kerberos Identity Management: KIM Identity Overview</TITLE> 
	<STYLE TYPE="text/css">
		@import url(../../../../Common/Documentation/templates/site.css);
	</STYLE>
</HEAD>
<BODY>

<DIV ID="menu">
<IMG SRC="../../../../Common/Documentation/graphics/Kerberos.jpg" ALT="Kerberos for Macintosh Logo">
<HR>
<P><A HREF="../../../../Common/Documentation/index.html">Home</A></P>
<P><A HREF="http://web.mit.edu/kerberos/">MIT Kerberos</A></P>
<P><A HREF="http://web.mit.edu/ist/">MIT IS&amp;T</A></P>
<HR>
<P><A HREF="../../../../Common/Documentation/news.html">News</A></P>
<P><A HREF="../../../../Common/Documentation/documentation.html">Documentation</A></P>
<P><A HREF="../../../../Common/Documentation/developer.html">Developer Resources</A></P>
<P><A HREF="../../../../Common/Documentation/license.html">License</A></P>
<HR>
<P><A HREF="../../../../Common/Documentation/download.html">Download</A></P>
<P><A HREF="../../../../Common/Documentation/support.html">Support</A></P>
<P><A HREF="../../../../Common/Documentation/contact.html">Contact Us</A></P>
</DIV>
<DIV ID="body">
<!-- end bbinclude -->
<!-- Generated by Doxygen 1.4.6 -->
<h1><a class="anchor" name="kim_identity_overview">KIM Identity Overview</a></h1><h2><a class="anchor" name="kim_identity_introduction">
Introduction</a></h2>
Identities in Kerberos are named by "principals". These identies may be people (users) or services (a server running on a host). When Kerberos issues credentials which authenticate one identity to another, the identity being authenticated is called the "client identity" and the identity being authenticated to is called the "service identity".<p>
Kerberos identities are made up of one or more components, as well as the Kerberos realm the entity belongs to. For client identities the first component is usually the client username (eg: "jdoe"). For service identities the first component is the name of the service (eg: "imap").<p>
Kerberos identities have both a binary (opaque) representation and also a string representation. The string representation consists of the components separated by '/' followed by an '@' and then the realm. For example, the identity "jdoe/admin@EXAMPLE.COM" represents John Doe's administrator identity at the realm EXAMPLE.COM. Note that identity components may contain both '/' and '@' characters. When building a identity from its string representation these syntactic characters must be escaped with '\'.<h2><a class="anchor" name="kim_identity_create_display">
Creating and Displaying Identities</a></h2>
KIM Identities can be generated from components, their escaped string representation or from a krb5_principal. Once you have a KIM identity object, you can also get the component, string or krb5_principal representations back out:<p>
<ul>
<li><a class="el" href="group__kim__identity__reference.html#gd98419d88372078ff849426c9a9f177e">kim_identity_create_from_components()</a> creates an identity object from a list of components. </li>
<li><a class="el" href="group__kim__identity__reference.html#g6077350272922bf196e9a900e5989c41">kim_identity_get_number_of_components()</a> returns the number of components in an identity object. </li>
<li><a class="el" href="group__kim__identity__reference.html#gea580688eb077e78bcbf9cc3e2bb1a87">kim_identity_get_component_at_index()</a> return a component of an identity object. </li>
<li><a class="el" href="group__kim__identity__reference.html#gb5c93208197c70e202209adf61b49a3b">kim_identity_get_realm()</a> returns the identity's realm.</li>
</ul>
<ul>
<li><a class="el" href="group__kim__identity__reference.html#ga69ec4892b8a0dc7aa183803d0cb15fd">kim_identity_create_from_string()</a> generates an identity object from an escaped string representation. </li>
<li><a class="el" href="group__kim__identity__reference.html#gf335ac09504999d0ad61390ede02c113">kim_identity_get_string()</a> returns the identity's escaped string representation. </li>
<li><a class="el" href="group__kim__identity__reference.html#g3421872c143cc80b1bf220c34e26cc21">kim_identity_get_display_string()</a> returns a non-escaped string for display to the user. This string cannot be passed into <a class="el" href="group__kim__identity__reference.html#ga69ec4892b8a0dc7aa183803d0cb15fd">kim_identity_create_from_string()</a>.</li>
</ul>
<ul>
<li><a class="el" href="group__kim__identity__reference.html#g34ba6e9df8a0a8f2f133ad51322e8b1a">kim_identity_create_from_krb5_principal()</a> generates an identity object from a krb5_principal object. </li>
<li><a class="el" href="group__kim__identity__reference.html#g63b40561de2bfe2315990d1579d5db75">kim_identity_get_krb5_principal()</a> returns a krb5_principal object for an identity object.</li>
</ul>
<ul>
<li><a class="el" href="group__kim__identity__reference.html#g445ddb044181a68fdbad8a63e614add5">kim_identity_get_gss_name()</a> returns a gss_name_t object for use with gss_acquire_cred().</li>
</ul>
<dl compact><dt><b>Note:</b></dt><dd>If you need to know if two identity objects refer to the same entity, use <a class="el" href="group__kim__identity__reference.html#g0a595bbcd2927fc57b9d6dad8bceccf4">kim_identity_compare()</a>.</dd></dl>
<h2><a class="anchor" name="kim_identity_selection">
Choosing a Client Identity</a></h2>
Unfortunately most of the time applications don't know what client identity to use. Users may have identities for multiple Kerberos realms, as well as multiple identities in a single realm (such as a user and administrator identity).<p>
To solve this problem, <a class="el" href="group__kim__selection__hints__reference.html#g4c18a97d53150f0b3536e52ab884973d">kim_selection_hints_get_identity()</a> takes information from the application in the form of a selection hints object and returns the best matching client identity, if one is available. See <a class="el" href="kim_selection_hints_overview.html">KIM Selection Hints Overview</a> for more information.<h2><a class="anchor" name="kim_identity_password">
Changing a Identity's Password</a></h2>
Many Kerberos sites use passwords for user accounts. Because passwords may be stolen or compromised, they must be frequently changed. KIM provides APIs to change the identity's password directly, and also handles changing the identity's password when it has expired.<p>
<a class="el" href="group__kim__identity__reference.html#g493fd86d79650af831d52b8a14b2774c">kim_identity_change_password()</a> presents a user interface to obtain the old and new passwords from the user. <a class="el" href="group__kim__identity__reference.html#g3d80784fbb7750a527bcfae6c8c7ca13">kim_identity_change_password_with_passwords()</a> takes the old and new passwords as input, but may still present a user interface if it needs to obtain additional information to authenticate.<p>
<dl compact><dt><b>Note:</b></dt><dd>Not all identities have a password. Some sites use certificates (pkinit) and in the future there may be other authentication mechanisms (eg: smart cards).</dd></dl>
See <a class="el" href="group__kim__identity__reference.html">KIM Identity Reference Documentation</a> for information on specific APIs. 
<!-- #bbinclude "footer.txt" -->
</DIV>
<DIV ID="footer">
	<P>
		Copyright 2006 Massachusetts Institute of Technology.<BR>
		Last updated on $Date: 2006-01-06 20:23:52 -0500 (Fri, 06 Jan 2006) $ <BR> 
		Last modified by $Author: lxs $ 
	</P>
</DIV>
<!-- Begin MIT-use only web reporting counter -->
	<IMG SRC="http://counter.mit.edu/tally" WIDTH=1 HEIGHT=1 ALT="">
<!-- End MIT-use only web reporting counter -->
</BODY></HTML>
<!-- end bbinclude -->