2012-03-26 12 views
5

बनाना कस्टम डेटा के साथ मुझे SAML टोकन बनाना होगा।कस्टम SAML टोकन

वहाँ MSDN पर एक अच्छी लग रही उदाहरण है, लेकिन यह संकलन नहीं कर रहा है ....

किसी नमूना काम करने का इसके बारे में पढ़ने के लिए श्रीमती मिल गया है?

या केवल सम्मिलन संग्रह में नए दावों को जोड़ रहा है? क्या मुझे फेडरेशन मेटाडेटा में उनका वर्णन करने की आवश्यकता है? मुझे अन्य मुद्दों को क्या करना चाहिए? कोई मदद देखने में खुशी होगी।

उत्तर

12

मुझे याद है कि एसीएस नमूने में से एक में कुछ कस्टम SAML टोकन पीढ़ी कोड है। यह शुरू करने के लिए एक अच्छी जगह होगी। आप इसे here डाउनलोड कर सकते हैं, OAuth2CertificateSample, SelfSignedSaml2TokenGenerator.cs के लिए देखें। कोड इस तरह दिखता है: महासंघ मेटाडाटा में वर्णित है

/// <summary> 
/// Creates a SAML assertion signed with the given certificate. 
/// </summary> 
public static Saml2SecurityToken GetSamlAssertionSignedWithCertificate(String nameIdentifierClaim, byte[] certificateWithPrivateKeyRawBytes, string password) 
{ 
    string acsUrl = string.Format(CultureInfo.InvariantCulture, "https://{0}.{1}", SamplesConfiguration.ServiceNamespace, SamplesConfiguration.AcsHostUrl); 

    Saml2Assertion assertion = new Saml2Assertion(new Saml2NameIdentifier(nameIdentifierClaim)); 

    Saml2Conditions conditions = new Saml2Conditions(); 
    conditions.NotBefore = DateTime.UtcNow; 
    conditions.NotOnOrAfter = DateTime.MaxValue; 
    conditions.AudienceRestrictions.Add(new Saml2AudienceRestriction(new Uri(acsUrl, UriKind.RelativeOrAbsolute))); 
    assertion.Conditions = conditions; 

    Saml2Subject subject = new Saml2Subject(); 
    subject.SubjectConfirmations.Add(new Saml2SubjectConfirmation(Saml2Constants.ConfirmationMethods.Bearer)); 
    subject.NameId = new Saml2NameIdentifier(nameIdentifierClaim); 
    assertion.Subject = subject; 

    X509SigningCredentials clientSigningCredentials = new X509SigningCredentials(
      new X509Certificate2(certificateWithPrivateKeyRawBytes, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable)); 

    assertion.SigningCredentials = clientSigningCredentials; 

    return new Saml2SecurityToken(assertion); 
} 

इसके अलावा, प्रमाणीकरण प्रक्रिया जारी की आवश्यकता होती है नहीं है का दावा है। फेडरेशन मेटाडाटा में प्रकाशित दावे टोकन उपभोक्ता के लिए संकेत देते हैं कि जारी किए गए टोकन में उन्हें क्या उम्मीद करनी चाहिए।

+0

एक दिलचस्प समाधान के लिए धन्यवाद! –

+0

जैसा कि मैंने सोचा था, मेरे कोड में केवल एक ही समस्या हस्ताक्षर करने के लिए भूल गई थी। ग्रेट स्निपिट। बहुत प्यार। – Eon

+0

नया एसीएस डाउनलोड स्थान: https://code.msdn.microsoft.com/Windows-Azure-AD-Access-0dcde385 – fiat

संबंधित मुद्दे