public LinkedInAuthenticationOptions() { ClaimsIssuer = LinkedInAuthenticationDefaults.Issuer; CallbackPath = new PathString(LinkedInAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = LinkedInAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = LinkedInAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = LinkedInAuthenticationDefaults.UserInformationEndpoint; EmailAddressEndpoint = LinkedInAuthenticationDefaults.EmailAddressEndpoint; Scope.Add("r_liteprofile"); Scope.Add("r_emailaddress"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, ProfileFields.Id); ClaimActions.MapJsonKey(ClaimTypes.Email, LinkedInAuthenticationConstants.EmailAddressField); ClaimActions.MapCustomJson(ClaimTypes.Name, user => GetFullName(user)); ClaimActions.MapCustomJson(ClaimTypes.GivenName, user => GetMultiLocaleString(user, ProfileFields.FirstName)); ClaimActions.MapCustomJson(ClaimTypes.Surname, user => GetMultiLocaleString(user, ProfileFields.LastName)); ClaimActions.MapCustomJson(Claims.PictureUrl, user => GetPictureUrls(user)?.LastOrDefault()); ClaimActions.MapCustomJson(Claims.PictureUrls, user => { var urls = GetPictureUrls(user); return(urls == null ? null : string.Join(",", urls)); }); }
/// <summary> /// Initializes a new <see cref="FacebookOptions"/>. /// </summary> public FacebookOptions() { CallbackPath = new PathString("/signin-facebook"); SendAppSecretProof = true; AuthorizationEndpoint = FacebookDefaults.AuthorizationEndpoint; TokenEndpoint = FacebookDefaults.TokenEndpoint; UserInformationEndpoint = FacebookDefaults.UserInformationEndpoint; Scope.Add("email"); Fields.Add("name"); Fields.Add("email"); Fields.Add("first_name"); Fields.Add("last_name"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonSubKey("urn:facebook:age_range_min", "age_range", "min"); ClaimActions.MapJsonSubKey("urn:facebook:age_range_max", "age_range", "max"); ClaimActions.MapJsonKey(ClaimTypes.DateOfBirth, "birthday"); ClaimActions.MapJsonKey(ClaimTypes.Email, "email"); ClaimActions.MapJsonKey(ClaimTypes.Name, "name"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "first_name"); ClaimActions.MapJsonKey("urn:facebook:middle_name", "middle_name"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "last_name"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "gender"); ClaimActions.MapJsonKey("urn:facebook:link", "link"); ClaimActions.MapJsonSubKey("urn:facebook:location", "location", "name"); ClaimActions.MapJsonKey(ClaimTypes.Locality, "locale"); ClaimActions.MapJsonKey("urn:facebook:timezone", "timezone"); }
/// <summary> /// Configuration options for <see cref="StravaHandler"/>. /// </summary> public StravaOptions() { ClaimsIssuer = StravaDefaults.Issuer; CallbackPath = new PathString(StravaDefaults.CallbackPath); AuthorizationEndpoint = StravaDefaults.AuthorizationEndpoint; TokenEndpoint = StravaDefaults.TokenEndpoint; UserInformationEndpoint = StravaDefaults.UserInformationEndpoint; Scope.Add("public"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Name, "username"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "firstname"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "lastname"); ClaimActions.MapJsonKey(ClaimTypes.Email, "email"); ClaimActions.MapJsonKey(ClaimTypes.StateOrProvince, "state"); ClaimActions.MapJsonKey(ClaimTypes.Country, "country"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "sex"); ClaimActions.MapJsonKey("urn:strava:city", "city"); ClaimActions.MapJsonKey("urn:strava:profile", "profile"); ClaimActions.MapJsonKey("urn:strava:profile-medium", "profile_medium"); ClaimActions.MapJsonKey("urn:strava:created-at", "created_at"); ClaimActions.MapJsonKey("urn:strava:updated-at", "updated_at"); ClaimActions.MapJsonKey("urn:strava:premium", "premium"); }
public LinkedInAuthenticationOptions() { ClaimsIssuer = LinkedInAuthenticationDefaults.Issuer; CallbackPath = new PathString(LinkedInAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = LinkedInAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = LinkedInAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = LinkedInAuthenticationDefaults.UserInformationEndpoint; ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Email, "emailAddress"); ClaimActions.MapJsonKey(ClaimTypes.Name, "formattedName"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "firstName"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "lastName"); ClaimActions.MapJsonKey(Claims.MaidenName, "maidenName"); ClaimActions.MapJsonKey(Claims.ProfileUrl, "publicProfileUrl"); ClaimActions.MapJsonKey(Claims.PictureUrl, "pictureUrl"); ClaimActions.MapJsonKey(Claims.Industry, "industry"); ClaimActions.MapJsonKey(Claims.Summary, "summary"); ClaimActions.MapJsonKey(Claims.Headline, "headline"); ClaimActions.MapCustomJson(Claims.Positions, user => user["positions"]?.ToString()); ClaimActions.MapJsonKey(Claims.PhoneticFirstName, "phoneticFirstName"); ClaimActions.MapJsonKey(Claims.PhoneticLastName, "phoneticLastName"); ClaimActions.MapJsonKey(Claims.FormattedPhoneticName, "formattedPhoneticName"); ClaimActions.MapCustomJson(Claims.Location, user => user["location"]?.ToString()); ClaimActions.MapJsonKey(Claims.Specialties, "specialties"); ClaimActions.MapJsonKey(Claims.NumConnections, "numConnections"); ClaimActions.MapJsonKey(Claims.NumConnectionsCapped, "numConnectionsCapped"); ClaimActions.MapJsonKey(Claims.CurrentShare, "currentShare"); ClaimActions.MapCustomJson(Claims.PictureUrls, user => user["pictureUrls"]?.ToString()); }
public EsiaAuthenticationOptions() { CallbackPath = new PathString("/signin-esia"); AuthorizationEndpoint = EsiaAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = EsiaAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = EsiaAuthenticationDefaults.UserInformationEndpoint; Scope.Add(EsiaConstants.UserInformationScope); ClaimActions.MapJsonKey(ClaimTypes.DateOfBirth, "birthDate"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "gender"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "firstName"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "lastName"); ClaimActions.MapJsonKey(EsiaConstants.TrustedUrn, "trusted"); ClaimActions.MapJsonKey(EsiaConstants.MiddleNameUrn, "middleName"); ClaimActions.MapJsonKey(EsiaConstants.BirthPlaceUrn, "birthPlace"); ClaimActions.MapJsonKey(EsiaConstants.CitizenshipUrn, "citizenship"); ClaimActions.MapJsonKey(EsiaConstants.SnilsUrn, "snils"); ClaimActions.MapJsonKey(EsiaConstants.InnUrn, "inn"); ClaimActions.MapCustomJson(ClaimTypes.Name, ParseName); ClaimActions.MapCustomJson(ClaimTypes.Email, obj => ParseContactInfo(obj, "EML")); ClaimActions.MapCustomJson(ClaimTypes.MobilePhone, obj => ParseContactInfo(obj, "MBT")); ClaimActions.MapCustomJson(ClaimTypes.HomePhone, obj => ParseContactInfo(obj, "PHN")); ClaimActions.MapCustomJson(ClaimTypes.OtherPhone, obj => ParseContactInfo(obj, "CPH")); }
public WeixinAuthenticationOptions() { ClaimsIssuer = WeixinAuthenticationDefaults.Issuer; CallbackPath = WeixinAuthenticationDefaults.CallbackPath; AuthorizationEndpoint = WeixinAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = WeixinAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = WeixinAuthenticationDefaults.UserInformationEndpoint; Scope.Add("snsapi_login"); Scope.Add("snsapi_userinfo"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "unionid"); ClaimActions.MapJsonKey(ClaimTypes.Name, "nickname"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "sex"); ClaimActions.MapJsonKey(ClaimTypes.Country, "country"); ClaimActions.MapJsonKey(Claims.OpenId, "openid"); ClaimActions.MapJsonKey(Claims.Province, "province"); ClaimActions.MapJsonKey(Claims.City, "city"); ClaimActions.MapJsonKey(Claims.HeadImgUrl, "headimgurl"); ClaimActions.MapCustomJson(Claims.Privilege, user => { if (!user.TryGetProperty("privilege", out var value) || value.ValueKind != System.Text.Json.JsonValueKind.Array) { return(null); } return(string.Join(',', value.EnumerateArray().Select(element => element.GetString()))); }); }
public SpotifyAuthenticationOptions() { ClaimsIssuer = SpotifyAuthenticationDefaults.Issuer; CallbackPath = SpotifyAuthenticationDefaults.CallbackPath; AuthorizationEndpoint = SpotifyAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = SpotifyAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = SpotifyAuthenticationDefaults.UserInformationEndpoint; ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Name, "display_name"); ClaimActions.MapJsonKey(ClaimTypes.Email, "email"); ClaimActions.MapJsonKey(ClaimTypes.DateOfBirth, "birthdate"); ClaimActions.MapJsonKey(ClaimTypes.Country, "country"); ClaimActions.MapJsonKey(ClaimTypes.Uri, "uri"); ClaimActions.MapJsonKey(Claims.Product, "product"); ClaimActions.MapJsonSubKey(Claims.Url, "external_urls", "spotify"); ClaimActions.MapCustomJson( Claims.ProfilePicture, user => { if (user.TryGetProperty("images", out var images)) { return(images.EnumerateArray().Select((p) => p.GetString("url")).FirstOrDefault()); } return(null); }); }
/// <summary> /// Initializes a new <see cref="FacebookOptions"/>. /// </summary> public FacebookOptions() { CallbackPath = new PathString("/signin-facebook"); SendAppSecretProof = true; AuthorizationEndpoint = FacebookDefaults.AuthorizationEndpoint; TokenEndpoint = FacebookDefaults.TokenEndpoint; UserInformationEndpoint = FacebookDefaults.UserInformationEndpoint; Scope.Add("public_profile"); Scope.Add("email"); Fields.Add("name"); Fields.Add("email"); Fields.Add("first_name"); Fields.Add("last_name"); ClaimActions.MapJsonKey("sub", "id"); ClaimActions.MapJsonSubKey("urn:facebook:age_range_min", "age_range", "min"); ClaimActions.MapJsonSubKey("urn:facebook:age_range_max", "age_range", "max"); ClaimActions.MapJsonKey("birthdate", "birthday"); ClaimActions.MapJsonKey("email", "email"); ClaimActions.MapJsonKey("name", "name"); ClaimActions.MapJsonKey("given_name", "first_name"); ClaimActions.MapJsonKey("middle_name", "middle_name"); ClaimActions.MapJsonKey("family_name", "last_name"); ClaimActions.MapJsonKey("gender", "gender"); ClaimActions.MapJsonKey("urn:facebook:link", "link"); ClaimActions.MapJsonSubKey("urn:facebook:location", "location", "name"); ClaimActions.MapJsonKey("locale", "locale"); ClaimActions.MapJsonKey("urn:facebook:timezone", "timezone"); }
/// <summary> /// Constructs a new <see cref="SpotifyOptions"/> /// </summary> public SpotifyOptions() { //The base constructor calls base.Validate() because we inherited //from OauthOptions it comes with default string null / empty check //for fields such as client id CallbackPath = new PathString("/signin-callback"); AuthorizationEndpoint = SpotifyDefaults.AuthorizationEndpoint; TokenEndpoint = SpotifyDefaults.TokenEndpoint; UserInformationEndpoint = SpotifyDefaults.UserInformationEndpoint; //spotify auth is separate from it's open id server (most likely private/internally used only) //Scope.Add("openid"); //This makes it an open id connection authentication shake ClaimActions.MapJsonKey($"{SpotifyDefaults.Issuer}:{ClaimTypes.Country}", "country"); ClaimActions.MapJsonKey($"{SpotifyDefaults.Issuer}:{ClaimTypes.Name}", "display_name"); ClaimActions.MapJsonKey($"{SpotifyDefaults.Issuer}:{ClaimTypes.Email}", "email"); ClaimActions.MapJsonKey($"{SpotifyDefaults.Issuer}:{ClaimTypes.NameIdentifier}", "id"); ClaimActions.MapJsonKey($"{SpotifyDefaults.Issuer}:{ClaimTypes.DateOfBirth}", "birthdate"); ClaimActions.MapJsonKey($"{SpotifyDefaults.Issuer}:{ClaimTypes.Uri}", "uri"); ClaimActions.MapCustomJson($"{SpotifyDefaults.Issuer}{SpotifyDefaults.ClaimType.ProfilePicture}", x => x.TryGetProperty($"{SpotifyDefaults.ClaimType.ProfilePicture}", out var imageArrayBlob) ? imageArrayBlob.ToString() : null); ClaimActions.MapCustomJson($"{SpotifyDefaults.Issuer}:{SpotifyDefaults.ClaimType.ExternalUrls}", x => x.TryGetProperty($"{SpotifyDefaults.ClaimType.ExternalUrls}", out var externalUrl) ? externalUrl.ToString() : null); ClaimActions.MapCustomJson($"{SpotifyDefaults.Issuer}{SpotifyDefaults.ClaimType.Followers}", x => x.TryGetProperty($"{SpotifyDefaults.ClaimType.Followers}", out var followers) ? followers.ToString() : null); ClaimActions.MapCustomJson($"{SpotifyDefaults.Issuer}{SpotifyDefaults.ClaimType.ExplicitContent}", x => x.TryGetProperty($"{SpotifyDefaults.ClaimType.ExplicitContent}", out var followers) ? followers.ToString() : null); }
public BaiduAuthenticationOptions() { ClaimsIssuer = BaiduAuthenticationDefaults.Issuer; CallbackPath = new PathString(BaiduAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = BaiduAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = BaiduAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = BaiduAuthenticationDefaults.UserInformationEndpoint; Scope.Add("basic"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "userid"); ClaimActions.MapJsonKey(ClaimTypes.Name, "username"); //"1"表示男,"0"表示女。 ClaimActions.MapJsonKey(ClaimTypes.Gender, "sex", ClaimValueTypes.Integer); ClaimActions.MapJsonKey(Claims.UserId, "userid"); ClaimActions.MapJsonKey(Claims.UserName, "username"); ClaimActions.MapJsonKey(Claims.RealName, "realname"); ClaimActions.MapJsonKey(Claims.Portrait, "portrait"); ClaimActions.MapJsonKey(Claims.UserDetail, "userdetail"); ClaimActions.MapJsonKey(Claims.Birthday, "birthday"); ClaimActions.MapJsonKey(Claims.Marriage, "marriage"); ClaimActions.MapJsonKey(Claims.Blood, "blood"); ClaimActions.MapJsonKey(Claims.Figure, "figure"); ClaimActions.MapJsonKey(Claims.Constellation, "constellation"); ClaimActions.MapJsonKey(Claims.Education, "education"); ClaimActions.MapJsonKey(Claims.Trade, "trade"); ClaimActions.MapJsonKey(Claims.Job, "job"); }
/// <summary> /// Initializes a new <see cref="SuperOfficeAuthenticationOptions"/>. Default environment is Development (SOD). /// </summary> public SuperOfficeAuthenticationOptions() { Environment = SuperOfficeAuthenticationEnvironment.Development; CallbackPath = SuperOfficeAuthenticationDefaults.CallbackPath; Scope.Add("openid"); ClaimActions.MapJsonKey(ClaimTypes.Name, SuperOfficeAuthenticationConstants.PrincipalNames.FullName); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.ClaimNames.AssociateId, SuperOfficeAuthenticationConstants.PrincipalNames.AssociateId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.ClaimNames.Email, SuperOfficeAuthenticationConstants.PrincipalNames.EmailAddress); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.ClaimNames.UserPrincipalName, SuperOfficeAuthenticationConstants.PrincipalNames.Associate); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.BusinessId, SuperOfficeAuthenticationConstants.PrincipalNames.BusinessId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.CategoryId, SuperOfficeAuthenticationConstants.PrincipalNames.CategoryId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.ContactId, SuperOfficeAuthenticationConstants.PrincipalNames.ContactId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.ContextIdentifier, SuperOfficeAuthenticationConstants.PrincipalNames.DatabaseContextIdentifier); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.CountryId, SuperOfficeAuthenticationConstants.PrincipalNames.CountryId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.GroupId, SuperOfficeAuthenticationConstants.PrincipalNames.GroupId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.HomeCountryId, SuperOfficeAuthenticationConstants.PrincipalNames.HomeCountryId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.PersonId, SuperOfficeAuthenticationConstants.PrincipalNames.PersonId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.RoleName, SuperOfficeAuthenticationConstants.PrincipalNames.RoleName); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.RoleId, SuperOfficeAuthenticationConstants.PrincipalNames.RoleId); ClaimActions.MapJsonKey(SuperOfficeAuthenticationConstants.PrincipalNames.SecondaryGroups, SuperOfficeAuthenticationConstants.PrincipalNames.SecondaryGroups); // Add a custom claim action to map FunctionRights to claims ClaimActions.Add(new SuperOfficeFunctionalRightsClaimAction(this)); }
public WeChatOfficialOAuthOptions() { // 用于防止初始化错误,会在OAuthHandler.InitializeHandlerAsync中进行重写 ClientId = "WeChatOfficial"; ClientSecret = "WeChatOfficial"; ClaimsIssuer = WeChatOfficialOAuthConsts.ProviderKey; CallbackPath = new PathString(WeChatOfficialOAuthConsts.CallbackPath); AuthorizationEndpoint = WeChatOfficialOAuthConsts.AuthorizationEndpoint; TokenEndpoint = WeChatOfficialOAuthConsts.TokenEndpoint; UserInformationEndpoint = WeChatOfficialOAuthConsts.UserInformationEndpoint; Scope.Add(WeChatOfficialOAuthConsts.LoginScope); Scope.Add(WeChatOfficialOAuthConsts.UserInfoScope); // 这个原始的属性一定要写进去,框架与UserLogin.ProviderKey进行关联判断是否绑定微信 ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "openid"); ClaimActions.MapJsonKey(ClaimTypes.Name, "nickname"); // 把自定义的身份标识写进令牌 ClaimActions.MapJsonKey(AbpWeChatClaimTypes.OpenId, "openid"); ClaimActions.MapJsonKey(AbpWeChatClaimTypes.UnionId, "unionid");// 公众号如果与小程序关联,这个可以用上 ClaimActions.MapJsonKey(AbpWeChatClaimTypes.NickName, "nickname"); ClaimActions.MapJsonKey(AbpWeChatClaimTypes.Sex, "sex", ClaimValueTypes.Integer); ClaimActions.MapJsonKey(AbpWeChatClaimTypes.Country, "country"); ClaimActions.MapJsonKey(AbpWeChatClaimTypes.Province, "province"); ClaimActions.MapJsonKey(AbpWeChatClaimTypes.City, "city"); ClaimActions.MapJsonKey(AbpWeChatClaimTypes.AvatarUrl, "headimgurl"); ClaimActions.MapCustomJson(AbpWeChatClaimTypes.Privilege, user => { return(string.Join(",", user.GetStrings("privilege"))); }); }
/// <summary> /// Initializes a new <see cref="GoogleOptions"/>. /// </summary> public GoogleOptions() { CallbackPath = new PathString("/signin-google"); AuthorizationEndpoint = GoogleDefaults.AuthorizationEndpoint; TokenEndpoint = GoogleDefaults.TokenEndpoint; UserInformationEndpoint = GoogleDefaults.UserInformationEndpoint; Scope.Add("openid"); Scope.Add("profile"); Scope.Add("email"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); if (GoogleDefaults.UseGooglePlus) { ClaimActions.MapJsonKey(ClaimTypes.Name, "displayName"); ClaimActions.MapJsonSubKey(ClaimTypes.GivenName, "name", "givenName"); ClaimActions.MapJsonSubKey(ClaimTypes.Surname, "name", "familyName"); ClaimActions.MapJsonKey("urn:google:profile", "url"); ClaimActions.MapCustomJson(ClaimTypes.Email, GoogleHelper.GetEmail); } else { ClaimActions.MapJsonKey(ClaimTypes.Name, "name"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "given_name"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "family_name"); ClaimActions.MapJsonKey("urn:google:profile", "link"); ClaimActions.MapJsonKey(ClaimTypes.Email, "email"); } }
public QQAuthenticationOptions() { ClaimsIssuer = QQAuthenticationDefaults.Issuer; CallbackPath = new PathString(QQAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = QQAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = QQAuthenticationDefaults.TokenEndpoint; UserIdentificationEndpoint = QQAuthenticationDefaults.UserIdentificationEndpoint; UserInformationEndpoint = QQAuthenticationDefaults.UserInformationEndpoint; Scope.Add("get_user_info"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "openid"); ClaimActions.MapJsonKey(ClaimTypes.Name, "nickname"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "gender"); ClaimActions.MapJsonKey(Claims.NickName, "nickname"); ClaimActions.MapJsonKey(Claims.PictureUrl, "figureurl"); ClaimActions.MapJsonKey(Claims.PictureMediumUrl, "figureurl_1"); ClaimActions.MapJsonKey(Claims.PictureFullUrl, "figureurl_2"); ClaimActions.MapJsonKey(Claims.AvatarUrl, "figureurl_qq_1"); ClaimActions.MapJsonKey(Claims.AvatarFullUrl, "figureurl_qq_2"); ClaimActions.MapJsonKey(Claims.IsYellowVip, "is_yellow_vip"); ClaimActions.MapJsonKey(Claims.Vip, "vip"); ClaimActions.MapJsonKey(Claims.YellowVipLevel, "yellow_vip_level"); ClaimActions.MapJsonKey(Claims.Level, "level"); ClaimActions.MapJsonKey(Claims.IsYellowYearVip, "is_yellow_year_vip"); }
public AuthenticationOptions() { ClaimsIssuer = AuthenticationDefaults.Issuer; CallbackPath = AuthenticationDefaults.CallbackPath; AuthorizationEndpoint = AuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = AuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = AuthenticationDefaults.UserInformationEndpoint; DeauthorizationEndpoint = AuthenticationDefaults.DeauthorizationEndpoint; ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Name, "username"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "firstname"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "lastname"); ClaimActions.MapJsonKey(ClaimTypes.Email, "email"); ClaimActions.MapJsonKey(ClaimTypes.StateOrProvince, "state"); ClaimActions.MapJsonKey(ClaimTypes.Country, "country"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "sex"); ClaimActions.MapJsonKey(Claims.City, "city"); ClaimActions.MapJsonKey(Claims.Profile, "profile"); ClaimActions.MapJsonKey(Claims.ProfileMedium, "profile_medium"); ClaimActions.MapJsonKey(Claims.CreatedAt, "created_at"); ClaimActions.MapJsonKey(Claims.UpdatedAt, "updated_at"); ClaimActions.MapJsonKey(Claims.Premium, "premium"); }
public WeiChatAuthenticationOptions() { ClaimsIssuer = WeiChatAuthenticationDefaults.Issuer; CallbackPath = new PathString(WeiChatAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = WeiChatAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = WeiChatAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = WeiChatAuthenticationDefaults.UserInformationEndpoint; Scope.Add("snsapi_login"); Scope.Add("snsapi_userinfo"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "unionid"); ClaimActions.MapJsonKey(ClaimTypes.Name, "nickname"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "sex", ClaimValueTypes.Integer); ClaimActions.MapJsonKey(Claims.OpenId, "openid"); ClaimActions.MapJsonKey(Claims.NickName, "nickname"); ClaimActions.MapJsonKey(Claims.Language, "language"); ClaimActions.MapJsonKey(Claims.City, "city"); ClaimActions.MapJsonKey(Claims.Province, "province"); ClaimActions.MapJsonKey(ClaimTypes.Country, "country"); ClaimActions.MapJsonKey(Claims.HeadImgUrl, "headimgurl"); ClaimActions.MapCustomJson(Claims.Privilege, user => { var value = user.Value <JArray>("privilege"); return(value == null ? null : string.Join(",", value.ToObject <string[]>())); }); //ClaimActions.MapCustomJson(Claims.Privilege, user => string.Join(",", user.SelectToken("privilege")?.Select(s => (string)s).ToArray() ?? new string[0])); }
public NextcloudAuthenticationOptions() { ClaimsIssuer = NextcloudAuthenticationDefaults.Issuer; CallbackPath = NextcloudAuthenticationDefaults.CallbackPath; ClaimActions.MapCustomJson(ClaimTypes.NameIdentifier, user => GetDataString(user, "id")); ClaimActions.MapCustomJson(Claims.Username, user => GetDataString(user, "id")); ClaimActions.MapCustomJson(Claims.DisplayName, user => GetDataString(user, "displayname")); ClaimActions.MapCustomJson(ClaimTypes.Email, user => GetDataString(user, "email")); ClaimActions.MapCustomJson(Claims.IsEnabled, user => GetDataString(user, "enabled")); ClaimActions.MapCustomJson(Claims.Language, user => GetDataString(user, "language")); ClaimActions.MapCustomJson(Claims.Locale, user => GetDataString(user, "locale")); ClaimActions.MapCustomJson( Claims.Groups, user => { if (TryGetData(user, out var data) && data.TryGetProperty("groups", out var groups)) { return(string.Join(',', groups.EnumerateArray().Select((p) => p.GetString()))); } return(null); }); }
public WeixinAuthenticationOptions() { ClaimsIssuer = WeixinAuthenticationDefaults.Issuer; CallbackPath = new PathString(WeixinAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = WeixinAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = WeixinAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = WeixinAuthenticationDefaults.UserInformationEndpoint; Scope.Add("snsapi_login"); Scope.Add("snsapi_userinfo"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "unionid"); ClaimActions.MapJsonKey(ClaimTypes.Name, "nickname"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "sex"); ClaimActions.MapJsonKey(ClaimTypes.Country, "country"); ClaimActions.MapJsonKey(WeixinAuthenticationConstants.Claims.OpenId, "openid"); ClaimActions.MapJsonKey(WeixinAuthenticationConstants.Claims.Province, "province"); ClaimActions.MapJsonKey(WeixinAuthenticationConstants.Claims.City, "city"); ClaimActions.MapJsonKey(WeixinAuthenticationConstants.Claims.HeadImgUrl, "headimgurl"); ClaimActions.MapCustomJson(WeixinAuthenticationConstants.Claims.Privilege, user => { var value = user.Value <JArray>("privilege"); if (value == null) { return(null); } return(string.Join(",", value.ToObject <string[]>())); }); }
public YandexAuthenticationOptions() { ClaimsIssuer = YandexAuthenticationDefaults.Issuer; CallbackPath = new PathString(YandexAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = YandexAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = YandexAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = YandexAuthenticationDefaults.UserInformationEndpoint; ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Name, "login"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "last_name"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "first_name"); ClaimActions.MapCustomJson( ClaimTypes.Email, user => { if (user.TryGetProperty("emails", out var emails)) { return(emails.EnumerateArray().Select((p) => p.GetString()).FirstOrDefault()); } return(null); }); }
public CsdnAuthenticationOptions() { ClaimsIssuer = CsdnAuthenticationDefaults.Issuer; CallbackPath = new PathString(CsdnAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = CsdnAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = CsdnAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = CsdnAuthenticationDefaults.UserInformationEndpoint; //Scope.Add("snsapi_login"); //Scope.Add("snsapi_userinfo"); //Scope.Add("basic"); //ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "userid"); ClaimActions.MapJsonKey(ClaimTypes.Name, "username"); //"1"表示男,"0"表示女。 ClaimActions.MapJsonKey(ClaimTypes.Gender, "gender", ClaimValueTypes.Integer); //ClaimActions.MapJsonKey(Claims.UserId, "userid"); //ClaimActions.MapJsonKey(Claims.UserName, "username"); ClaimActions.MapJsonKey(Claims.Job, "job"); ClaimActions.MapJsonKey(Claims.WorkYear, "portrait"); ClaimActions.MapJsonKey(Claims.Website, "userdetail"); ClaimActions.MapJsonKey(Claims.Description, "birthday"); //ClaimActions.MapJsonKey(Claims.Marriage, "marriage"); //ClaimActions.MapJsonKey(Claims.Blood, "blood"); //ClaimActions.MapJsonKey(Claims.Figure, "figure"); //ClaimActions.MapJsonKey(Claims.Constellation, "constellation"); //ClaimActions.MapJsonKey(Claims.Education, "education"); //ClaimActions.MapJsonKey(Claims.Trade, "trade"); //ClaimActions.MapJsonKey(Claims.Job, "job"); }
public QQAuthenticationOptions() { ClaimsIssuer = QQAuthenticationDefaults.Issuer; CallbackPath = new PathString(QQAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = QQAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = QQAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = QQAuthenticationDefaults.UserInformationEndpoint; OpenIdEndpoint = QQAuthenticationDefaults.UserOpenIdEndpoint; #if NETSTANDARD2_0 ClaimActionCollectionMapExtensions.MapJsonKey(ClaimActions, ClaimTypes.NameIdentifier, "id"); ClaimActionCollectionMapExtensions.MapJsonKey(ClaimActions, ClaimTypes.Name, "displayName"); #endif #if NETCOREAPP3_0 || NETCOREAPP3_1 ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Name, "nickname"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "gender"); ClaimActions.MapJsonKey("urn:qq:figureurl", "figureurl"); ClaimActions.MapJsonKey("urn:qq:figureurl_1", "figureurl_1"); ClaimActions.MapJsonKey("urn:qq:figureurl_2", "figureurl_2"); ClaimActions.MapJsonKey("urn:qq:figureurl_qq_1", "figureurl_qq_1"); ClaimActions.MapJsonKey("urn:qq:figureurl_qq_2", "figureurl_qq_2"); ClaimActions.MapJsonKey("urn:qq:is_yellow_vip", "is_yellow_vip"); ClaimActions.MapJsonKey("urn:qq:vip", "vip"); ClaimActions.MapJsonKey("urn:qq:yellow_vip_level", "yellow_vip_level"); ClaimActions.MapJsonKey("urn:qq:level", "level"); ClaimActions.MapJsonKey("urn:qq:is_yellow_year_vip", "is_yellow_year_vip"); #endif }
public HarvestAuthenticationOptions() { ClaimsIssuer = HarvestAuthenticationDefaults.Issuer; CallbackPath = HarvestAuthenticationDefaults.CallbackPath; AuthorizationEndpoint = HarvestAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = HarvestAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = HarvestAuthenticationDefaults.UserInformationEndpoint; ClaimActions.MapJsonSubKey(ClaimTypes.NameIdentifier, "user", "id"); ClaimActions.MapJsonSubKey(ClaimTypes.GivenName, "user", "first_name"); ClaimActions.MapJsonSubKey(ClaimTypes.Surname, "user", "last_name"); ClaimActions.MapJsonSubKey(ClaimTypes.Email, "user", "email"); ClaimActions.MapCustomJson( ClaimTypes.Name, payload => { if (!payload.TryGetProperty("user", out var user)) { return(null); } return($"{user.GetString("first_name")} {user.GetString("last_name")}".Trim()); }); }
public WeChatOptions() { CallbackPath = new PathString("/signin-wechat"); AuthorizationEndpoint = WeChatDefaults.AuthorizationEndpoint; AuthorizationEndpoint2 = WeChatDefaults.AuthorizationEndpoint2; TokenEndpoint = WeChatDefaults.TokenEndpoint; UserInformationEndpoint = WeChatDefaults.UserInformationEndpoint; //Scope 表示应用授权作用域。 //网页上登录(非微信浏览器)需要两个Scope,一个是UserInfo,一个是Login Scope.Add(UserInfoScope); Scope.Add(LoginScope); //微信内嵌浏览器Login只需要UserInfo Scope2 = new List <string>(); Scope2.Add(UserInfoScope); //除了openid外,其余的都可能为空,因为微信获取用户信息是有单独权限的 ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "openid"); ClaimActions.MapJsonKey(ClaimTypes.Name, "nickname"); ClaimActions.MapJsonKey(ClaimTypes.Gender, "sex", ClaimValueTypes.Integer); ClaimActions.MapJsonKey(ClaimTypes.Country, "country"); //ClaimTypes.Locality ClaimActions.MapJsonKey("urn:wechat:province", "province"); //ClaimTypes.StateOrProvince ClaimActions.MapJsonKey("urn:wechat:city", "city"); //ClaimTypes.StreetAddress ClaimActions.MapJsonKey(ClaimTypes.Uri, "headimgurl"); ClaimActions.MapCustomJson("urn:wechat:privilege", user => string.Join(",", user.GetProperty("privilege").EnumerateArray().Select(s => s.GetString()).ToArray() ?? new string[0])); ClaimActions.MapJsonKey("urn:wechat:unionid", "unionid"); IsWeChatBrowser = (r) => r.Headers[HeaderNames.UserAgent].ToString().ToLower().Contains("micromessenger"); }
public LinkedInAuthenticationOptions() { ClaimsIssuer = LinkedInAuthenticationDefaults.Issuer; CallbackPath = new PathString(LinkedInAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = LinkedInAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = LinkedInAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = LinkedInAuthenticationDefaults.UserInformationEndpoint; ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Email, "emailAddress"); ClaimActions.MapJsonKey(ClaimTypes.Name, "formattedName"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "firstName"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "lastName"); ClaimActions.MapJsonKey("urn:linkedin:maidenname", "maidenName"); ClaimActions.MapJsonKey("urn:linkedin:profile", "publicProfileUrl"); ClaimActions.MapJsonKey("urn:linkedin:profilepicture", "pictureUrl"); ClaimActions.MapJsonKey("urn:linkedin:industry", "industry"); ClaimActions.MapJsonKey("urn:linkedin:summary", "summary"); ClaimActions.MapJsonKey("urn:linkedin:headline", "headline"); ClaimActions.MapCustomJson("urn:linkedin:positions", user => user["positions"]?.ToString()); ClaimActions.MapJsonKey("urn:linkedin:phoneticfirstname", "phoneticFirstName"); ClaimActions.MapJsonKey("urn:linkedin:phoneticlastname", "phoneticLastName"); ClaimActions.MapJsonKey("urn:linkedin:phoneticname", "formattedPhoneticName"); ClaimActions.MapCustomJson("urn:linkedin:location", user => user["location"]?.ToString()); ClaimActions.MapJsonKey("urn:linkedin:specialties", "specialties"); ClaimActions.MapJsonKey("urn:linkedin:numconnections", "numConnections"); ClaimActions.MapJsonKey("urn:linkedin:numconnectionscapped", "numConnectionsCapped"); ClaimActions.MapJsonKey("urn:linkedin:currentshare", "currentShare"); ClaimActions.MapCustomJson("urn:linkedin:pictureurls", user => user["pictureUrls"]?.ToString()); }
public PaypalAuthenticationOptions() { ClaimsIssuer = PaypalAuthenticationDefaults.Issuer; CallbackPath = PaypalAuthenticationDefaults.CallbackPath; AuthorizationEndpoint = PaypalAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = PaypalAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = PaypalAuthenticationDefaults.UserInformationEndpoint; Scope.Add("openid"); Scope.Add("profile"); Scope.Add("email"); ClaimActions.MapJsonKey(ClaimTypes.Name, "name"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "given_name"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "family_name"); ClaimActions.MapCustomJson(ClaimTypes.NameIdentifier, user => user.GetString("user_id")?.Split('/')?.LastOrDefault()); ClaimActions.MapCustomJson( ClaimTypes.Email, user => { if (user.TryGetProperty("emails", out var emails)) { return(emails.EnumerateArray() .Where((p) => p.GetProperty("primary").GetBoolean()) .Select((p) => p.GetString("value")) .FirstOrDefault()); } return(null); }); }
public KakaoTalkAuthenticationOptions() { ClaimsIssuer = KakaoTalkAuthenticationDefaults.Issuer; CallbackPath = KakaoTalkAuthenticationDefaults.CallbackPath; AuthorizationEndpoint = KakaoTalkAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = KakaoTalkAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = KakaoTalkAuthenticationDefaults.UserInformationEndpoint; ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapCustomJson(ClaimTypes.Name, user => { JsonElement property = user; bool hasProperty = property.TryGetProperty("kakao_account", out property) && property.TryGetProperty("profile", out property) && property.TryGetProperty("nickname", out property) && property.ValueKind == JsonValueKind.String; return(hasProperty ? property.GetString() : null); }); ClaimActions.MapJsonSubKey(ClaimTypes.Email, "kakao_account", "email"); ClaimActions.MapJsonSubKey(ClaimTypes.DateOfBirth, "kakao_account", "birthday"); ClaimActions.MapJsonSubKey(ClaimTypes.Gender, "kakao_account", "gender"); ClaimActions.MapJsonSubKey(ClaimTypes.MobilePhone, "kakao_account", "phone_number"); ClaimActions.MapJsonSubKey(Claims.AgeRange, "kakao_account", "age_range"); ClaimActions.MapJsonSubKey(Claims.YearOfBirth, "kakao_account", "birthyear"); }
public AlipayAuthenticationOptions() { ClaimsIssuer = AlipayAuthenticationDefaults.Issuer; CallbackPath = new PathString(AlipayAuthenticationDefaults.CallbackPath); AuthorizationEndpoint = AlipayAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = AlipayAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = AlipayAuthenticationDefaults.UserInformationEndpoint; GatewayUrl = AlipayAuthenticationDefaults.GatewayUrl; AlipayPublicKey = AlipayAuthenticationDefaults.AlipayPublicKey; SignType = AlipayAuthenticationDefaults.SignType; CharSet = AlipayAuthenticationDefaults.CharSet; Version = AlipayAuthenticationDefaults.Version; Format = AlipayAuthenticationDefaults.Format; IsKeyFromFile = AlipayAuthenticationDefaults.IsKeyFromFile; Scope.Add("auth_user"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "user_id"); ClaimActions.MapJsonKey(ClaimTypes.Name, "nick_name"); //【注意】只有is_certified为T的时候才有意义,否则不保证准确性. 性别(F:女性;M:男性)。 ClaimActions.MapJsonKey(ClaimTypes.Gender, "gender", ClaimValueTypes.Integer); ClaimActions.MapJsonKey(Claims.UserId, "user_id"); ClaimActions.MapJsonKey(Claims.NickName, "nick_name"); ClaimActions.MapJsonKey(Claims.Avatar, "avatar"); ClaimActions.MapJsonKey(Claims.Province, "province"); ClaimActions.MapJsonKey(Claims.City, "city"); ClaimActions.MapJsonKey(Claims.IsStudentCertified, "is_student_certified"); ClaimActions.MapJsonKey(Claims.UserType, "user_type"); ClaimActions.MapJsonKey(Claims.UserStatus, "user_status"); ClaimActions.MapJsonKey(Claims.IsCertified, "is_certified"); }
public KloudlessAuthenticationOptions() { ClaimsIssuer = KloudlessAuthenticationDefaults.Issuer; CallbackPath = KloudlessAuthenticationDefaults.CallbackPath; AuthorizationEndpoint = KloudlessAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = KloudlessAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = KloudlessAuthenticationDefaults.UserInformationEndpoint; ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Name, "account"); ClaimActions.MapJsonKey(Claims.Account, "account"); ClaimActions.MapJsonKey(Claims.Service, "service"); ClaimActions.MapJsonKey(Claims.InternalUse, "internal_use"); ClaimActions.MapJsonKey(Claims.Created, "created"); ClaimActions.MapJsonKey(Claims.Modified, "modified"); ClaimActions.MapJsonKey(Claims.ServiceName, "service_name"); ClaimActions.MapJsonKey(Claims.Admin, "admin"); ClaimActions.MapJsonKey(Claims.Apis, "apis"); ClaimActions.MapJsonKey(Claims.EffectiveScope, "effective_scope"); ClaimActions.MapJsonKey(Claims.Api, "api"); ClaimActions.MapJsonKey(Claims.Type, "type"); ClaimActions.MapJsonKey(Claims.Enabled, "enabled"); ClaimActions.MapJsonKey(Claims.ObjectDefinitions, "object_definitions"); ClaimActions.MapJsonKey(Claims.CustomProperties, "custom_properties"); ClaimActions.MapJsonKey(Claims.ProxyConnection, "proxy_connection"); ClaimActions.MapJsonKey(Claims.Active, "active"); Scope.Add(Scopes.Any); }
public BtOAuthOptions() { AuthorizationEndpoint = "https://apistorebt.ro/mga/sps/oauth/oauth20/authorize"; TokenEndpoint = "https://api.apistorebt.ro/bt/sb/oauth/token"; CallbackPath = "/signin-bt"; SaveTokens = true; Scope.Add("openid"); Scope.Add("profile"); Scope.Add("email"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id"); ClaimActions.MapJsonKey(ClaimTypes.Name, "name"); ClaimActions.MapJsonKey(ClaimTypes.GivenName, "given_name"); ClaimActions.MapJsonKey(ClaimTypes.Surname, "family_name"); ClaimActions.MapJsonKey(ClaimTypes.Email, "email"); Events.OnTicketReceived = context => { context.HandleResponse(); // Default redirect path is the base path if (string.IsNullOrEmpty(context.ReturnUri)) { context.ReturnUri = "/"; } context.Response.Redirect(context.ReturnUri); return Task.CompletedTask; }; }
public WxWorkAuthenticationOptions() { CallbackPath = WxWorkAuthenticationDefaults.CallbackPath; ClaimsIssuer = WxWorkAuthenticationDefaults.Issuer; AuthorizationEndpoint = WxWorkAuthenticationDefaults.AuthorizationEndpoint; TokenEndpoint = WxWorkAuthenticationDefaults.TokenEndpoint; UserInformationEndpoint = WxWorkAuthenticationDefaults.UserInformationEndpoint; MemberInformationEndpoint = WxWorkAuthenticationDefaults.MemberInformationEndpoint; UserIdConvertToOpenIdEndpoint = WxWorkAuthenticationDefaults.UserIdConvertToOpenIdEndpoint; Scope.Add("snsapi_base"); ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "openid"); ClaimActions.MapJsonKey(JwtClaimTypes.Name, "name"); ClaimActions.MapJsonKey(JwtClaimTypes.NickName, "alias"); ClaimActions.MapJsonKey(JwtClaimTypes.Email, "email"); ClaimActions.MapJsonKey(JwtClaimTypes.PhoneNumber, "mobile"); ClaimActions.MapJsonKey(JwtClaimTypes.Address, "address"); ClaimActions.MapJsonKey(JwtClaimTypes.Gender, "gender"); ClaimActions.MapJsonKey(JwtClaimTypes.Subject, "openid"); ClaimActions.MapJsonKey(JwtClaimTypes.Picture, "avatar"); ClaimActions.MapJsonKey(Claims.Userid, "userid"); ClaimActions.MapJsonKey(Claims.OpenUserId, "openid"); ClaimActions.MapJsonKey(Claims.AccountStatus, "status"); }