/ / हम .NET कोर पर Okta से उपयोगकर्ता समूहों द्वारा स्क्रीन कैसे कर सकते हैं? - asp.net-core, Openid-connect, okta

हम .NET कोर पर ओकेटा से उपयोगकर्ता समूहों द्वारा कैसे स्क्रीन कर सकते हैं? - एएसपीनेट-कोर, ओपनिड-कनेक्ट, ओकेटा

मैं एएसपी का उपयोग कर रहा हूं।NET कोर MVC एक वेब ऐप के लिए और स्क्रीन पृष्ठों के लिए एक नीति का उपयोग करने के लिए। जब मैं कोई आवश्यकता बनाता हूं, तो मैं OpenID कनेक्ट (नाम, ver, iss, ऑडिट, iat, आदि) के साथ आने वाले सभी नियमित दावों को खोजने में सक्षम हूं, लेकिन समूह नहीं, हालांकि मैं OpenID में समूह जोड़ रहा हूं। ओक्टा में टोकन कॉन्फ़िगरेशन कनेक्ट करें।

Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options => {
options.AddPolicy("ActionPrivilegeRequired", policy => policy.Requirements.Add(new ActionPrivilegeRequirement()));
});
}

ActionPrivilegeRequirement.cs:

    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ActionPrivilegeRequirement requirement)
{
var groupMembership = context.User.FindFirst(
c => c.Type == "groups").Value;

// ...
return Task.CompletedTask;
}

मुझे उपयोगकर्ता ऑब्जेक्ट के दावों के लिए ओक्टा उपयोगकर्ता की समूह सदस्यता जोड़ने के लिए क्या करने की आवश्यकता है?


अद्यतन करें:

मैंने "OpenId मिडलवेयर को दायरे में समूहों को शामिल करने के लिए अपडेट किया है:

            OpenIdConnectOptions opts = new OpenIdConnectOptions()
{
//...
};
opts.Scope.Clear();
opts.Scope.Add("openid");
opts.Scope.Add("profile");
opts.Scope.Add("groups");

और पुष्टि की है कि सर्वर अनुरोध [ओक्टा एंडपॉइंट] / oauth2 / v1 / टोकन और क्लाइंट अनुरोध में / समूहों को शामिल करने का अनुरोध करता है, लेकिन अभी भी दावों में पाया गया समूह "" नहीं है।

उत्तर:

उत्तर № 1 के लिए 1

यदि आप पहले से ऐसा नहीं कर रहे हैं - क्या आपने इसे जोड़ा है समूहों गुंजाइश है / अधिकृत करते हैं निवेदन? ऐसा लगता है कि आपने ओक्टा एडमिन साइड पर समूहों को कॉन्फ़िगर किया है, लेकिन क्लाइंट से भी इसे अनुरोध करने की आवश्यकता है।

यदि आप समूहों के दायरे का अनुरोध कर रहे हैं, तो देखने के लिए कुछ अन्य चीजें हैं:

  1. क्या आपके पास 100 से अधिक समूह हैं जिन्हें लौटाया जाएगा? के नीचे एक नोट है गुंजाइश निर्भर दावे डॉक्टर जो इस सीमा के बारे में बात करते हैं।

  2. यदि आप सत्यापित करते हैं कि आप अनुरोध कर रहे हैंसमूहों के दायरे के साथ, और यह अभी भी काम नहीं कर रहा है - क्या आप id_token की जांच कर सकते हैं जो ओक्टा से लौटा है और सत्यापित करें कि इसमें समूह शामिल हैं या नहीं? यदि ऐसा होता है, तो यह .NET sdk में एक बग हो सकता है (जो हम एक मुद्दा खोल सकते हैं)।


जवाब के लिए 0 № 2

FYI 2.0 अब कुकी ब्लोट के कारण उपयोगकर्ता जानकारी के समापन बिंदु से सब कुछ नहीं जोड़ता है। अपने दावों में दिखाने के लिए समूह बनाने के लिए मैंने इसे AddOpenIdConnect विकल्पों में जोड़ा ...

options.ClaimActions.Add(new CustomJsonClaimAction(ClaimTypes.Role, ClaimTypes.Role, (x) => string.Join(",", x["groups"].Values<string>())));