का उपयोग कर टोकन जेनरेट करने का प्रयास करने में त्रुटि मैं टोकन उत्पन्न करने के लिए पैकेज सिस्टम का उपयोग करने की कोशिश कर रहा हूं। IdentityModel.Tokens.Jwt। मुझे कुछ कोड नमूने ऑनलाइन मिले, बहुत सरल थे, लेकिन फिर मैं एक त्रुटि में भाग रहा हूं जिसे मैं समझ नहीं सकता।.NET JWT लाइब्रेरी
: (वर टोकन = tokenHandler.CreateToken (tokenDescriptor))
<%@ Application Language="C#" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Reflection" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.IdentityModel.Tokens" %>
<%@ Import Namespace="System.IdentityModel.Tokens.Jwt" %>
<%@ Import Namespace="System.Security.Claims" %>
<%@ Import Namespace="System.IdentityModel.Protocols.WSTrust" %>
<script runat="server">
public class TestClass
{
public static string GetJwtToken()
{
var tokenHandler = new JwtSecurityTokenHandler();
var input = "anyoldrandomtext";
var securityKey = new byte[input.Length * sizeof(char)];
Buffer.BlockCopy(input.ToCharArray(), 0, securityKey, 0, securityKey.Length);
var now = DateTime.UtcNow;
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new[]
{
new Claim(ClaimTypes.UserData,
"IsValid", ClaimValueTypes.String, "(local)")
}),
TokenIssuerName = "self",
AppliesToAddress = "https://www.mywebsite.com",
Lifetime = new Lifetime(now, now.AddMinutes(60)),
SigningCredentials = new SigningCredentials(new InMemorySymmetricSecurityKey(securityKey),
"http://www.w3.org/2001/04/xmldsig-more#hmac-sha256",
"http://www.w3.org/2001/04/xmlenc#sha256"),
};
var token = tokenHandler.CreateToken(tokenDescriptor);
var tokenString = tokenHandler.WriteToken(token);
return tokenString;
}
}
</script>
मैं लाइन 113 पर निम्न त्रुटि मिलती रहती है: यहाँ कोड मैं उपयोग कर रहा हूँ (संक्षिप्तता के लिए थोड़ा संशोधित किया गया है) है तर्क 1: 'Microsoft.IdentityModel.Tokens.SecurityTokenDescriptor'
करने के लिए 'System.IdentityModel.Tokens.SecurityTokenDescriptor' से परिवर्तित नहीं कर सकते लेकिन मैं काम करने बिल्कुल के रूप में मैं उन्हें किया है ऑनलाइन कई उदाहरण देखा है।
WIF 3.5 में, WIF कक्षाओं के सभी Microsoft.IdentityModel विधानसभा (microsoft.identitymicrosoft.identitymodel.dll) में निहित गया: मैं भी इस लेख (https://msdn.microsoft.com/en-us/library/jj157089(v=vs.110).aspx) निम्नलिखित कहा गया है कि में फंस गयी। डब्ल्यूआईएफ 4.5 में, डब्ल्यूआईएफ कक्षाओं को निम्नलिखित असेंबली में विभाजित किया गया है: mscorlib (mscorlib.dll), System.IdentityModel (System.IdentityModel.dll), सिस्टम। इंडेंटिटीमोडेल। सर्विसेज (System.IdentityModel.Services.dll) , और सिस्टम.ServiceModel (System.ServiceModel.dll)।
डब्ल्यूआईएफ 3.5 कक्षाएं सभी माइक्रोसॉफ्ट में शामिल थीं। इंडेंटिटी मॉडल नामस्थान; उदाहरण के लिए, माइक्रोसॉफ्ट। इंडेंटिटी मॉडल, माइक्रोसॉफ्ट.इडेन्टिटीमोडेल टोकेंस, माइक्रोसॉफ्ट.इडेन्टिटीमोडेल.एब, और इसी तरह। डब्ल्यूआईएफ 4.5 में, डब्ल्यूआईएफ कक्षा अब सिस्टम भर में फैली हुई हैं। इंडेंटिटी मॉडल नामस्थान, सिस्टम। सुरक्षा। क्लास नामस्थान, और सिस्टम। सेवा मॉडल। सुरक्षा नामस्थान। इस पुनर्गठन के अलावा, कुछ WIF 3.5 कक्षा को WIF 4.5 में गिरा दिया गया है।
मैं खातिर डिबगिंग माइक्रोसॉफ्ट का उपयोग करने के लिए स्विच करने के लिए करने की कोशिश की। * SecurityTokenDescriptor के लिए नाम स्थान, और फिर मैं कह रहा TokenIssuerName, AppliesToAddress, और लाइफटाइम त्रुटियों की एक और श्रृंखला रहे हैं कि वर्ग के लिए मान्य गुण नहीं। फिर भी जब मैं ऑनलाइन दस्तावेज़ों को देखता हूं, ऐसा लगता है कि उन गुणों का माइक्रोसॉफ्ट पर मौजूद है। IdentityModel.Tokens.SecurityTokenDescriptor। फिर भी मेरे विजुअल स्टूडियो में, जब मैं उस कक्षा के लिए परिभाषा पर जाता हूं, तो वे वहां नहीं हैं, मुझे विश्वास है कि मेरे विजुअल स्टूडियो में कुछ प्रकार की कॉन्फ़िगरेशन समस्या है। मेरे पैकेज मैनेजर में, यह दिखाता है कि मेरे पास माइक्रोसॉफ्ट है IDentityModel.Tokens v5.0.0 स्थापित है। जेडब्ल्यूटी लाइब्रेरी की आवश्यकता होने के बाद से मैंने परियोजना को .NET Framework 4.5.1 में भी बदल दिया है। इसके अलावा, मुझे नहीं पता कि और कहां देखना है।
अंततः इसका परीक्षण करने के लिए चारों ओर मिल गया और यह खूबसूरती से काम किया। बहुत धन्यवाद! – Rocket04