protected override ClaimsIdentity GetOutputClaimsIdentity(ClaimsPrincipal principal, RequestSecurityToken request, Scope scope) { if (principal == null) { throw new InvalidRequestException("The caller's principal is null."); } // check github string ak = principal.FindFirst(Constants.CLAIM_TYPE_GITHUB_AK).Value; string openid = Utility.GetOpenId(ak); // check account ADAccountInfo info = AccountHelper.GetHelper().GetAccount(openid); if (info == null) { throw new InvalidRequestException("wrong github login or not binded, cannot login."); } var claims = new[] { new Claim(Constants.CLAIM_TYPE_PRIMARY_SID, info.primarysid), new Claim(System.IdentityModel.Claims.ClaimTypes.Upn, info.upnUpper), new Claim(System.IdentityModel.Claims.ClaimTypes.Upn, info.upnLower), new Claim(System.IdentityModel.Claims.ClaimTypes.Name, info.name), }; var id = new ClaimsIdentity(claims); return(id); }
public void AddAccount(string openid, ADAccountInfo info) { accounts.Add(openid, info); }