Esempio n. 1
0
        // Token: 0x060001E0 RID: 480 RVA: 0x00008C98 File Offset: 0x00006E98
        public override AnchorMailbox CreateAuthModuleSpecificAnchorMailbox(IRequestContext requestContext)
        {
            HttpContext          httpContext = requestContext.HttpContext;
            OAuthPreAuthIdentity oauthPreAuthIdentity;

            if (HttpContextUserParser.TryGetOAuthPreAuthIdentity(httpContext.User, ref oauthPreAuthIdentity))
            {
                try
                {
                    string externalDirectoryObjectId;
                    if (!RequestHeaderParser.TryGetExternalDirectoryObjectId(httpContext.Request.Headers, ref externalDirectoryObjectId))
                    {
                        OAuthPreAuthType preAuthType = oauthPreAuthIdentity.PreAuthType;
                        switch (preAuthType)
                        {
                        case 1:
                            requestContext.Logger.SafeSet(3, "PreAuth-Smtp");
                            return(new SmtpAnchorMailbox(oauthPreAuthIdentity.LookupValue, requestContext));

                        case 2:
                            requestContext.Logger.SafeSet(3, "PreAuth-LiveID");
                            return(new LiveIdMemberNameAnchorMailbox(oauthPreAuthIdentity.LookupValue, null, requestContext));

                        case 3:
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                            break;

                        case 8:
                            requestContext.Logger.SafeSet(3, "PreAuth-TenantGuid");
                            return(new DomainAnchorMailbox(oauthPreAuthIdentity.TenantGuid.ToString(), requestContext));

                        case 9:
                            requestContext.Logger.SafeSet(3, "PreAuth-TenantDomain");
                            return(new DomainAnchorMailbox(oauthPreAuthIdentity.TenantDomain, requestContext));

                        case 10:
                            requestContext.Logger.SafeSet(3, "PreAuth-ExternalDirectoryObjectIdTenantGuid");
                            return(new ExternalDirectoryObjectIdAnchorMailbox(oauthPreAuthIdentity.LookupValue, oauthPreAuthIdentity.TenantGuid, requestContext));

                        case 11:
                            requestContext.Logger.SafeSet(3, "PreAuth-ExternalDirectoryObjectIdTenantDomain");
                            return(new ExternalDirectoryObjectIdAnchorMailbox(oauthPreAuthIdentity.LookupValue, oauthPreAuthIdentity.TenantDomain, requestContext));

                        default:
                            switch (preAuthType)
                            {
                            case 99:
                            {
                                string arg = "Unable to parse OAuth token to locate routing key, extended error data=" + oauthPreAuthIdentity.ExtendedErrorInformation;
                                RequestDetailsLoggerBase <RequestDetailsLogger> .SafeAppendGenericError(requestContext.Logger, "OAuthError", oauthPreAuthIdentity.ExtendedErrorInformation);

                                MSDiagnosticsHeader.SetStandardOAuthDiagnosticsResponse(httpContext, 2000001, string.Format(OAuthErrorsUtil.GetDescription(2007), arg), null, null);
                                requestContext.Logger.SafeSet(3, "PreAuth-AnonymousAnchorMailbox");
                                return(new AnonymousAnchorMailbox(requestContext));
                            }

                            case 100:
                                requestContext.Logger.SafeSet(3, "PreAuth-PuidAndDomain");
                                return(new PuidAnchorMailbox(oauthPreAuthIdentity.LookupValue, oauthPreAuthIdentity.TenantDomain, requestContext, string.Empty));

                            case 101:
                                requestContext.Logger.SafeSet(3, "PreAuth-PuidAndTenantGuid");
                                return(new PuidAnchorMailbox(oauthPreAuthIdentity.LookupValue, oauthPreAuthIdentity.TenantGuid, requestContext, string.Empty));
                            }
                            break;
                        }
                        throw new InvalidOperationException("unknown preauth type");
                    }
                    requestContext.Logger.SafeSet(3, "PreAuth-ExternalDirectoryObjectId-Header");
                    if (!string.IsNullOrEmpty(oauthPreAuthIdentity.TenantDomain))
                    {
                        return(new ExternalDirectoryObjectIdAnchorMailbox(externalDirectoryObjectId, oauthPreAuthIdentity.TenantDomain, requestContext));
                    }
                    if (oauthPreAuthIdentity.TenantGuid != Guid.Empty)
                    {
                        return(new ExternalDirectoryObjectIdAnchorMailbox(externalDirectoryObjectId, oauthPreAuthIdentity.TenantGuid, requestContext));
                    }
                    throw new InvalidOperationException("unknown preauth type");
                }
                finally
                {
                    if (!string.IsNullOrEmpty(oauthPreAuthIdentity.LoggingInfo))
                    {
                        requestContext.Logger.AppendGenericInfo("OAuthInfo", oauthPreAuthIdentity.LoggingInfo);
                    }
                }
            }
            return(null);
        }
Esempio n. 2
0
 // Token: 0x060001DF RID: 479 RVA: 0x00008C89 File Offset: 0x00006E89
 public static bool IsOAuth(HttpContext httpContext)
 {
     return(HttpContextUserParser.IsOAuthAuthentication(httpContext.User));
 }