मैं निम्न तरीके से लागू करने में कामयाब रहे।
दूसरा, मेरे Startup.Auth.cs
में यह विन्यस्त करने:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "From the Azure Portal (see below)",
Authority = "https://login.windows.net/<domain>.onmicrosoft.com",
Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider = (ctx) =>
{
if (ctx.Request.Path.Value.EndsWith("ExternalLogin"))
{
string appBasePathUrl = ctx.Request.Scheme + "://" + ctx.Request.Host + ctx.Request.PathBase;
ctx.ProtocolMessage.RedirectUri = appBasePathUrl + "/";
ctx.ProtocolMessage.PostLogoutRedirectUri = appBasePathUrl;
}
else
{
ctx.State = NotificationResultState.Skipped;
ctx.HandleResponse();
}
return Task.FromResult(0);
}
},
Description = new AuthenticationDescription
{
AuthenticationType = "OpenIdConnect",
Caption = "SomeNameHere"
}
});
तीसरा, मैं सेटअप Azure पोर्टल में आवेदन (क्लासिक):
चौथा, मैंने व्यवस्थापक उपयोगकर्ताओं के लिए एक अलग लॉगऑन पेज जोड़ा:
@using (Html.BeginForm("ExternalLogin", "Home"))
{
@Html.AntiForgeryToken()
<div class="ui basic segment">
<div class="ui list">
<div class="item">
<button type="submit" name="provider" value="OpenIdConnect" class="left floated huge ui button social">
<i class="windows icon"></i>
<span>My Org Name</span>
</button>
</div>
</div>
</div>
}
पांचवें, ExternalLogin
कार्रवाई को बदलने की जरूरत नहीं है - हम सिर्फ Owin मिडलवेयर बाहरी प्रवेश पृष्ठ पर हमें पुन: निर्देशित करते हैं। प्रवाह तब उपयोगकर्ता को ExternalLoginCallback
कार्रवाई पर वापस निर्देशित करेगा।
अंत में, ExternalLoginCallback
कार्रवाई में, मैं भेजे दावों की जांच निर्धारित करने के लिए कि लॉगिन Azure AD के माध्यम से किया गया था, और इसके बजाय ASP.NET पहचान में बुलाने की, मैं अपने ही ClaimsIdentity
, जो मेरे सारे (आवेदन है निर्माण विशिष्ट) दावा जानकारी जो मेरा एप्लिकेशन व्यवस्थापक उपयोगकर्ता के रूप में पहचानता है।
अब, व्यवस्थापक उपयोगकर्ता https://example.com/admin
पर नेविगेट करते हैं, लॉगिन बटन पर क्लिक करें, Azure AD लॉगिन पर रीडायरेक्ट किए जाते हैं, और एप्लिकेशन को व्यवस्थापक उपयोगकर्ता के रूप में वापस ले जाते हैं।
हां, मैंने इसमें तुरंत देखा है। मैं वास्तव में इस से बचने की कोशिश कर रहा था - उपयोगकर्ता अनुभव वास्तव में मेल नहीं खाता जो मैं प्राप्त करना चाहता हूं। –
हो सकता है कि आप थिंकटेक्चर की पहचान सर्वर (http://thinktecture.github.io/Thinktecture.IdentityServer.v2/) जैसी कुछ लीवरेजिंग रोल कर सकें। डाउनसाइड यह है कि अब एक होस्टेड सेवा नहीं है और आपको अपने प्रमाणीकरण हैंडलर के रूप में कार्यरत सर्वर को खिलाने और बनाए रखने की आवश्यकता है। –