SharePoint 2013 display identity claims with
the following encoding format:
·
<IdentityClaim>:0<ClaimType><ClaimValueType><AuthMode>|<OriginalIssuer
(optional)>|<ClaimValue>
·
For e.g. à i:0#.w|<Domain
Name>\<userid>
Where:
- <IdentityClaim> indicates
the type of claim and is the following:
- “i” for an identity claim
- “c” for any other claim
- <ClaimType> indicates the
format for the claim value and is the following:
- “#” for a user logon name
- “.” for an anonymous user
- “5” for an email address
- “!” for an identity provider
- “+” for a Group security identifier (SID)
- “-“ for a role
- “%” for a farm ID
- “?” for a name identifier
- "\" for a private personal identifier (PPID)
- "e" for a user principal name (UPN)
- <ClaimValueType>
indicates the type of formatting for the claim value and is the following:
- “.” for a string
- “+” for an RFC 822-formatted name
- <AuthMode> indicates the
type of authentication used to obtain the identity claim and is the
following:
- “w” for Windows claims (no original issuer)
- “s” for the local SharePoint security token service
(STS) (no original issuer)
- “t” for a trusted issuer
- “m” for a membership issuer
- “r” for a role provider issuer
- “f” for forms-based authentication
- “c” for a claim provider
- <OriginalIssuer>
indicates the original issuer of the claim.
- <ClaimValueType>
indicates the value of the claim in the <ClaimType> format.
Here are some examples:
Type of claim
|
Encoded claim
|
Claim encoding breakdown
|
Windows User
|
i:0#.w|<Domain name>\<UserID>
|
|
Windows Authenticated Users group
|
c:0!.s|windows
|
|
SAML authentication (Trusted User)
|
i:05.t|adfs|userID@domain.com
|
|
Forms-based authentication
|
i:0#.f|mymembershipprovider|userid
|
|
This change means that your userid would look something
like this:
i:0#.w|<Domain Name>\<userid>
Instead of this:
<Domain Name>\<userid>
Sometimes when calling other services, you need the
windows userid and not the claim userid. So for these instances, I’ve
created a few helper methods.
public
const string CLAIMS_REGEX =
@"(?<IdentityClaim>[ic])?:?0(?<ClaimType>[#\.5\!\+\-%?\\])(?<ClaimValueType>[\.\+])(?<AuthMode>[wstmrfc])(\|(?<OriginalIssuer>[^\|]*))?(\|(?<ClaimValue>.*))";
public static string
GetAdUserIdForClaim(string login)
{
string userName = login;
foreach (Match m in
Regex.Matches(login, CLAIMS_REGEX, RegexOptions.IgnoreCase))
{
try
{
if (m.Groups["AuthMode"].Captures[0].Value.ToLower()
== "w") // Base on your Requirement change authentication mode[authentication mode:-> wstmrfc].
{
userName =
m.Groups["ClaimValue"].Captures[0].Value;
}
}
catch { }
}
return userName;
}
Name :- Sameer Kothari
Email :- skinfotech1983@gmail.com
No comments:
Post a Comment