2017-02-13 12 views
7

के लिए नया एईएस एन्क्रिप्शन टोकन जेनरेट करें। मैं 2015 से ओपन सोर्स सामुदायिक प्रोजेक्ट Azure Media Services Upload and Play Videos in MVC पर काम कर रहा हूं। मैं पहले किसी भी डिलीवरी एन्क्रिप्शन का उपयोग नहीं कर रहा था, इसलिए मैंने एईएस पर काम करना शुरू कर दिया।अज़ूर मीडिया सेवा - प्लेबैक

Azure मीडिया सर्विसेज टीम द्वारा सभी स्रोत कोड/नमूने में, मैंने देखा कि सामग्री अपलोड करने के बाद परीक्षण टोकन उत्पन्न किया जा रहा था और यह मेरे मामले में भी अच्छी तरह से काम करता है। लेकिन, मैं अगली बार प्लेबैक के लिए टेस्ट टोकन कैसे उत्पन्न करूं?

मुझे क्या समझा गया है कि, जब भी खिलाड़ी प्लेबैक अनुरोध करता है तो हमें टोकन की आवश्यकता होती है। तकनीकी रूप से, खिलाड़ी कुंजी सेवा प्रदाता के लिए अनुरोध बनाता है और अद्यतन टोकन प्राप्त करता है।

तो अद्यतन टोकन प्राप्त करने के लिए, मैंने इसे ठीक करने में सक्षम नहीं होने के कुछ तरीकों की कोशिश की, मुझे त्रुटि "एक सामग्रीकी (आईडी = '...', टाइप = 'लिफाफा एन्क्रिप्शन') त्रुटि दिखाई देती है जिसमें पहले से ही लिंक हैं इस संपत्ति के लिए "।

enter image description here

यह एक वैध त्रुटि संदेश की तरह लग रहा है क्योंकि प्रकार EnvelopeEncryption की कुंजी पहले से जोड़ा गया है और सामग्री को अपलोड करने के बाद संपत्ति के साथ जुड़े थे, और इस पॉप-अप करना का अनुरोध पर।

नीचे दिया गया कोड copied from here है।

public ActionResult Index() 
    { 
     var model = new List<VideoViewModel>(); 

     var videos = db.Videos.OrderByDescending(o => o.Id).ToList(); 
     foreach (var video in videos) 
     { 
      var viewModel = new VideoViewModel(); 
      viewModel.Id = video.Id; 
      viewModel.EncodedAssetId = video.EncodedAssetId; 
      viewModel.IsEncrypted = video.IsEncrypted; 
      viewModel.LocatorUri = video.LocatorUri; 

      // If encrypted content, then get token to play 
      if (video.IsEncrypted) 
      { 
       IAsset asset = GetAssetById(video.EncodedAssetId); 
       IContentKey key = CreateEnvelopeTypeContentKey(asset); 
       viewModel.Token = GenerateToken(key); 
      } 

      model.Add(viewModel); 
     } 

     return View(model); 
    } 

उपरोक्त विधि मीडिया सेवा कुंजी सेवा प्रदाता को कॉल करता है।

मैं इसे कैसे ठीक करूं?

+0

आप के साथ एकीकृत करने के लिए देख रहे हैं के आधार पर की जरूरत है Azure सक्रिय निर्देशिका साइन इन करें या आप अपने स्वयं के लेख प्रदाता का उपयोग करेंगे? कारण मैं पूछ रहा हूं क्योंकि एएडी –

+0

के साथ एकीकरण दिखाते हुए हाल के उदाहरण हैं, मैं मीडिया सर्विसेज नमूना एमवीसी ओपन सोर्स ऐप बना रहा हूं। तो, यह ऐप सभी के लिए उपलब्ध होगा, इसलिए अब तक कोई प्रमाणीकरण नहीं है। लेकिन निश्चित रूप से, उपयोगकर्ता उनकी जरूरतों के हिसाब से अनुकूलित कर सकते हैं। लेकिन मुझे नहीं लगता कि एएडी या ऑथ सेटअप मदद करेगा। –

उत्तर

0

आप AMS explorer sources

पर गौर कर सकते हैं जब आप एक प्रतिबंध नीति बनाने यो कुछ इस तरह कर रहे हैं:

//Initilizing ContentKeyAuthorizationPolicyRestriction 
    ContentKeyAuthorizationPolicyRestriction restriction = new ContentKeyAuthorizationPolicyRestriction 
    { 
     Name = "Authorization Policy with Token Restriction", 
     KeyRestrictionType = (int)ContentKeyRestrictionType.TokenRestricted, 
     Requirements = TokenRestrictionTemplateSerializer.Serialize(restrictionTemplate)}; 

    restrictions.Add(restriction); 

    //Saving IContentKeyAuthorizationPolicyOption on server so it can be associated with IContentKeyAuthorizationPolicy 
    IContentKeyAuthorizationPolicyOption policyOption = objCloudMediaContext.ContentKeyAuthorizationPolicyOptions.Create("myDynamicEncryptionPolicy", ContentKeyDeliveryType.BaselineHttp, restrictions, String.Empty); 
    policy.Options.Add(policyOption); 

    //Saving Policy 
    policy.UpdateAsync(); 

कुंजी यहाँ क्षेत्र है irements = TokenRestrictionTemplateSerializer.Serialize (restriction.Requirements)};

आप

TokenRestrictionTemplate tokenTemplate = TokenRestrictionTemplateSerializer.Deserialize(tokenTemplateString); 

के साथ वापस इसी संपत्ति प्रतिबंध आप पहली जगह बनाई लाने और TokenRestriction खाका desirialize के लिए महत्वपूर्ण हैं कि किस प्रकार और एन्क्रिप्शन आप उपयोग

      if (tokenTemplate.PrimaryVerificationKey.GetType() == typeof(SymmetricVerificationKey)) 
          { 
           InMemorySymmetricSecurityKey tokenSigningKey = new InMemorySymmetricSecurityKey((tokenTemplate.PrimaryVerificationKey as SymmetricVerificationKey).KeyValue); 
           signingcredentials = new SigningCredentials(tokenSigningKey, SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.Sha256Digest); 
          } 
          else if (tokenTemplate.PrimaryVerificationKey.GetType() == typeof(X509CertTokenVerificationKey)) 
          { 
           if (signingcredentials == null) 
           { 
            X509Certificate2 cert = DynamicEncryption.GetCertificateFromFile(true).Certificate; 
            if (cert != null) signingcredentials = new X509SigningCredentials(cert); 
           } 
          } 
          JwtSecurityToken token = new JwtSecurityToken(issuer: tokenTemplate.Issuer, audience: tokenTemplate.Audience, notBefore: DateTime.Now.AddMinutes(-5), expires: DateTime.Now.AddMinutes(Properties.Settings.Default.DefaultTokenDuration), signingCredentials: signingcredentials, claims: myclaims); 
          JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler(); 
          string token = handler.WriteToken(token); 
+0

इसे जीथ्यूब पर एएमएस एक्सप्लोरर स्रोतों की मदद से बनाएं। समय लेने और इसका उत्तर देने के लिए जॉर्ज धन्यवाद। –

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