2016-08-11 9 views
6

Gday!सेवा फैब्रिक में WsFederation प्रमाणीकरण ओविन पाइपलाइन काम नहीं कर रहा

मैंने इस पर बहुत कुछ नहीं देखा है क्योंकि यह इस लेखन के समय बहुत ही नया है। मैं एक सेवा कपड़े आवेदन लिखने की कोशिश कर रहा हूं जो उपयोगकर्ता को एसीएस के माध्यम से प्रमाणीकृत करने के बाद एक वेब ऐप (एचटीएमएल/जेएस) परोसता है। मैं इसे गैर सेवा कपड़े पर्यावरण में ओविन के साथ काम करने के लिए आसानी से प्राप्त कर सकता हूं, यानी आईआईएस के पीछे पारंपरिक एएसपी नेट एप्लिकेशन। मैं Azure Access Control के साथ टोकन प्रमाणीकरण का उपयोग करने की कोशिश कर रहा हूं।

तो इस तथ्य के साथ कुछ करने के लिए कि अब मैं सेवा कपड़े का उपयोग कर रहा हूं, जिस तरह से ओविन काम करता है? कैसे मैं जाल एपीआई मिडलवेयर कि अंततः अपने ब्राउज़र एचटीएमएल सेवा करने के लिए इस्तेमाल किया जाएगा से पहले WsFederation मिडलवेयर इंजेक्षन

public static void ConfigureApp(IAppBuilder appBuilder) 
    {       
     appBuilder.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

     appBuilder.UseCookieAuthentication(new CookieAuthenticationOptions()); 

     appBuilder.UseWsFederationAuthentication(
      new WsFederationAuthenticationOptions 
      { 
       Wtrealm = _realm, 
       MetadataAddress = _acsXmlMetaDataUrl 
      }); 

     // Configure Web API for self-host. 
     HttpConfiguration config = new HttpConfiguration(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     appBuilder.UseWebApi(config); 
    } 

नोटिस: नीचे मेरी सेवा कपड़े आवेदन में मेरी Startup.cs भीतर मेरे Owin ConfigureApp() फ़ंक्शन है/जेएस आवेदन। अब जब यह लॉन्च होता है और मैं एक आरईएसटी यूआरएल पर नेविगेट करने की तरह एक सैनिटी टेस्ट करता हूं तो मेरी सामग्री तुरंत साइन इन करने के लिए एज़ूर एक्सेस कंट्रोल पर रीडायरेक्ट होने और ऑथ टोकन प्राप्त करने के बजाय तुरंत सेवा दी जाती है। मेरे पारंपरिक एएसपी नेट एप्लिकेशन में एक ही ओविन कॉन्फ़िगरेशन के साथ मुझे वास्तव में किसी भी संसाधन की सेवा करने से पहले Azure Access Control पर रीडायरेक्ट किया जाता है।

तो मेरा सवाल यह है कि मैं WWFed मिडलवेयर को ओविन पाइपलाइन में कैसे इंजेक्ट कर सकता हूं जैसे कि यह एक सेवा कपड़े संदर्भ में काम करेगा?

किसी भी सहायता की बहुत सराहना की जाएगी, आपके समय के लिए धन्यवाद!

उत्तर

1

मुझे नहीं पता कि यह कोड एमवीसी के लिए क्यों काम कर रहा है, न कि सेवा फैब्रिक के लिए। मेरे पास एक ही समस्या थी, लेकिन मुझे इसे एसएफ के लिए काम करने का एक तरीका मिला।

This article एक ट्यूटोरियल देता है।

मूल रूप से, आपके कोड में, आप इसे प्रमाणीकृत करने के लिए नहीं कह रहे हैं। आप सब कुछ सेट कर रहे हैं लेकिन आप इसे शुरू नहीं कर रहे हैं।

app.Map("/login", map => 
      { 
       map.Run(async ctx => 
       { 
        if (ctx.Authentication.User == null || 
         !ctx.Authentication.User.Identity.IsAuthenticated) 
        { 
         ctx.Response.StatusCode = 401; 
        } 
        else 
        { 
         ctx.Response.Redirect("/"); 
        } 
       }); 
      }); 

app.Run(async ctx => 
      { 
       var user = ctx.Authentication.User; 
       var response = ctx.Response; 

       response.ContentType = "text/html"; 

       if (user != null && user.Identity.IsAuthenticated) 
       { 
        await response.WriteAsync(string.Format("<h2>{0}</h2>", 
         user.Claims.First().Issuer)); 

        await response.WriteAsync("<dl>"); 
        foreach (var claim in user.Claims) 
        { 
         await response.WriteAsync(string.Format(
          "<dt>{0}</dt> <dd>{1}</dd>", 
          claim.Type, 
          claim.Value)); 
        } 
        await response.WriteAsync("</dl>"); 
       } 
       else 
       { 
        await ctx.Response.WriteAsync("<h2>anonymous</h2>"); 
       } 
      }); 

आप अपनी वेबसाइट पर एक लिंक तक पहुँचने रहे हैं, app.Run में कोड यदि आप लॉग इन हैं जाँच करने के लिए क्रियान्वित करने शुरू होता है। आप नहीं कर रहे हैं, इस मामले में, यह "गुमनाम लिखेंगे "अपनी सामग्री लोड करने के बजाय पेज पर। प्रमाणित करने के लिए, अपनी वेबसाइट/लॉगिन पर जाएं और यह आपको कॉन्फ़िगरेशन में पर जो भी लेखक प्रदाता है, उसे रीडायरेक्ट करेगा।

निष्कर्ष: लॉगिन, लॉगआउट और ऐप जोड़ें। रुन स्निपेट, यदि आपको यह करना है और यह होना चाहिए तो इसे अंतिम ट्विक दें।

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