示例#1
0
 public static OAuth2AccessTokenRequest CreateAccessTokenRequestWithAssertion(System.IdentityModel.Tokens.SecurityToken token, string resource)
 {
     Utility.VerifyNonNullArgument("token", token);
     Microsoft.IdentityModel.Tokens.SecurityTokenHandlerCollection securityTokenHandlerCollection = Microsoft.IdentityModel.Tokens.SecurityTokenHandlerCollection.CreateDefaultSecurityTokenHandlerCollection();
     securityTokenHandlerCollection.Add(new JsonWebSecurityTokenHandler());
     return(OAuth2MessageFactory.CreateAccessTokenRequestWithAssertion(token, securityTokenHandlerCollection, resource));
 }
示例#2
0
 public static OAuth2AccessTokenRequest CreateAccessTokenRequestWithAssertion(System.IdentityModel.Tokens.SecurityToken token, Microsoft.IdentityModel.Tokens.SecurityTokenHandlerCollection securityTokenHandlers, string resource)
 {
     Utility.VerifyNonNullArgument("token", token);
     if (token is JsonWebSecurityToken)
     {
         return(OAuth2MessageFactory.CreateAccessTokenRequestWithAssertion((JsonWebSecurityToken)token, securityTokenHandlers, resource));
     }
     if (token is System.IdentityModel.Tokens.GenericXmlSecurityToken)
     {
         return(OAuth2MessageFactory.CreateAccessTokenRequestWithAssertion((System.IdentityModel.Tokens.GenericXmlSecurityToken)token, resource));
     }
     if (token is System.IdentityModel.Tokens.SamlSecurityToken || token is Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityToken)
     {
         return(OAuth2MessageFactory.CreateAccessTokenRequestWithAssertionForSamlSecurityTokens(token, securityTokenHandlers, resource));
     }
     throw new System.ArgumentException("Unsupported SecurityToken");
 }
示例#3
0
        private static OAuth2AccessTokenRequest CreateAccessTokenRequestWithAssertion(JsonWebSecurityToken token, Microsoft.IdentityModel.Tokens.SecurityTokenHandlerCollection securityTokenHandlers, string resource)
        {
            Utility.VerifyNonNullArgument("token", token);
            Utility.VerifyNonNullArgument("securityTokenHandlers", securityTokenHandlers);
            JsonWebSecurityTokenHandler jsonWebSecurityTokenHandler = securityTokenHandlers[typeof(JsonWebSecurityToken)] as JsonWebSecurityTokenHandler;

            if (jsonWebSecurityTokenHandler == null)
            {
                throw new System.ArgumentException("The input security token handlers collection does not contain a handler for JWT tokens.", "securityTokenHandlers");
            }
            string assertion = jsonWebSecurityTokenHandler.WriteTokenAsString(token);

            return(new OAuth2AccessTokenRequest
            {
                GrantType = "http://oauth.net/grant_type/jwt/1.0/bearer",
                Assertion = assertion,
                Resource = resource
            });
        }
示例#4
0
        private static OAuth2AccessTokenRequest CreateAccessTokenRequestWithAssertionForSamlSecurityTokens(System.IdentityModel.Tokens.SecurityToken token, Microsoft.IdentityModel.Tokens.SecurityTokenHandlerCollection securityTokenHandlers, string resource)
        {
            Utility.VerifyNonNullArgument("securityTokenHandlers", securityTokenHandlers);
            OAuth2AccessTokenRequest oAuth2AccessTokenRequest = new OAuth2AccessTokenRequest();

            if (token is System.IdentityModel.Tokens.SamlSecurityToken)
            {
                oAuth2AccessTokenRequest.GrantType = "urn:oasis:names:tc:SAML:1.0:assertion";
            }
            else
            {
                oAuth2AccessTokenRequest.GrantType = "urn:oasis:names:tc:SAML:2.0:assertion";
            }
            System.Xml.XmlWriterSettings xmlWriterSettings = new System.Xml.XmlWriterSettings();
            System.Text.StringBuilder    stringBuilder     = new System.Text.StringBuilder();
            xmlWriterSettings.OmitXmlDeclaration = true;
            using (System.Xml.XmlWriter xmlWriter = System.Xml.XmlWriter.Create(stringBuilder, xmlWriterSettings))
            {
                securityTokenHandlers.WriteToken(xmlWriter, token);
                oAuth2AccessTokenRequest.Assertion = stringBuilder.ToString();
            }
            oAuth2AccessTokenRequest.Resource = resource;
            return(oAuth2AccessTokenRequest);
        }