جی دبلیو تی jwt
ساختن و بررسی توکن JWT و محافظت از مسیرهای API.
واردسازی جی دبلیو تی
JWT توکنی است که سرور پس از ورود کاربر امضا میکند و کارخواه با هر درخواست میفرستد؛ سرور با بررسی امضا بینیاز از پایگاه داده میداند کاربر کیست. این بسته الگوریتمهای HMAC، یعنی HS256، HS384 و HS512، را پشتیبانی میکند و توکن با الگوریتم none را هرگز نمیپذیرد.
برای یک API، یک نگهبان بسازید و در هر گرداننده نیاز یا روالهای مشابهش را صدا بزنید؛ اگر توکن نادرست باشد، پاسخ خطا خودکار فرستاده میشود. کلید باید بلند و تصادفی باشد، مثلاً از توکن تصادفی ایمن در رمزنگاری.
گونهها
توکن Token
ساختار توکن| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| alg | alg | رشته = "" | الگوریتم امضا، مثل HS256. |
| typ | typ | رشته = "" | نوع، معمولاً JWT. |
| kid | kid | رشته = "" | شناسهی کلید، اگر در سرآیند باشد. |
| claims | claims | ادعاها | ادعاهای استاندارد. |
| header_json | header_json | رشته = "" | متن جیسون سرآیند. |
| payload_json | payload_json | رشته = "" | متن جیسون بدنه. |
| signing_input | signing_input | رشته = "" | بخشی که امضا شده: سرآیند و بدنه با نقطه. |
| signature | signature | رشته = "" | امضا به شکل بیس۶۴ نشانیامن. |
| valid | valid | منطقی = نادرست | امضا و زمانها بررسی شده و درست بودهاند. |
واردسازی جی دبلیو تی
روال ریشه:
ناپایا ا := جی دبلیو تی.ادعاهای جدید()
ا.iss = "salamlang.ir"
ا.sub = "42"
ا.aud = "api"
ا.iat = ۱۷۰۰۰۰۰۰۰۰
ا.exp = ۱۷۰۰۰۰۳۶۰۰
جی دبلیو تی.تنظیم رشته(ا، "name"، "مریم")
جی دبلیو تی.تنظیم عدد(ا، "level"، ۳)
جی دبلیو تی.تنظیم منطقی(ا، "admin"، نادرست)
جی دبلیو تی.تنظیم خام(ا، "scope"، `"read write"`)
جی دبلیو تی.تنظیم خام(ا، "roles"، `["editor","viewer"]`)
سرچاپ جی دبلیو تی.جیسون ادعاها(ا)
ناپایا خطا := ۰
توکن := جی دبلیو تی.امضای اچ اس۲۵۶(ا، "راز-بلند-و-تصادفی"، خطا)
سرچاپ خطا == جی دبلیو تی.بدون خطا
سرچاپ توکن
ناپایا گ := جی دبلیو تی.گزینه های پیش فرض()
گ.now = ۱۷۰۰۰۰۱۰۰۰
گ.issuer = "salamlang.ir"
گ.audience = "api"
ت := جی دبلیو تی.تایید(توکن، "راز-بلند-و-تصادفی"، گ، خطا)
سرچاپ ت.valid، ت.alg، ت.typ، ت.claims.sub
سرچاپ جی دبلیو تی.رشته(ت، "name")، جی دبلیو تی.عدد(ت، "level")، جی دبلیو تی.منطقی(ت، "admin")، جی دبلیو تی.دارد(ت، "email")
سرچاپ جی دبلیو تی.خام(ت، "level")، جی دبلیو تی.دامنه دارد(ت، "write")، جی دبلیو تی.مخاطب دارد(ت، "api")، جی دبلیو تی.فهرست دارد(ت، "roles"، "editor")
_ := جی دبلیو تی.تایید(توکن، "راز-دیگر"، گ، خطا)
سرچاپ خطا == جی دبلیو تی.خطای امضا، جی دبلیو تی.متن خطا(خطا)
گ.now = ۱۸۰۰۰۰۰۰۰۰
_ := جی دبلیو تی.تایید(توکن، "راز-بلند-و-تصادفی"، گ، خطا)
سرچاپ خطا == جی دبلیو تی.خطای انقضا، جی دبلیو تی.متن خطا(خطا)
گ.now = ۱۷۰۰۰۰۱۰۰۰
گ.issuer = "example.com"
سرچاپ جی دبلیو تی.معتبر است(توکن، "راز-بلند-و-تصادفی"، گ)
_ := جی دبلیو تی.کدگشایی("abc"، خطا)
سرچاپ خطا == جی دبلیو تی.خطای قالب توکن
پایانادعاها Claims
ساختار ادعاها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| iss | iss | رشته = "" | صادرکننده. |
| sub | sub | رشته = "" | موضوع، معمولاً شناسهی کاربر. |
| aud | aud | رشته = "" | مخاطب. |
| aud_raw | aud_raw | رشته = "" | مخاطب به شکل جیسون، اگر آرایه باشد. |
| exp | exp | صحیح۶۴ = 0 | زمان انقضا بر حسب ثانیهی یونیکس. |
| nbf | nbf | صحیح۶۴ = 0 | زمانی که پیش از آن معتبر نیست. |
| iat | iat | صحیح۶۴ = 0 | زمان صدور. |
| jti | jti | رشته = "" | شناسهی یکتای توکن. |
| extra | extra | رشته = "" | ادعاهای دیگر به شکل جیسون. |
نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
گزینه ها Options
ساختار گزینه ها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| alg | alg | رشته = "HS256" | الگوریتمی که انتظار میرود؛ توکن با الگوریتم دیگر رد میشود. |
| issuer | issuer | رشته = "" | صادرکنندهی لازم؛ خالی یعنی بررسی نشود. |
| audience | audience | رشته = "" | مخاطب لازم. |
| subject | subject | رشته = "" | موضوع لازم. |
| leeway | leeway | صحیح۶۴ = 0 | چند ثانیه اختلاف ساعت پذیرفته شود. |
| now | now | صحیح۶۴ = 0 | زمان بررسی؛ صفر یعنی اکنون. برای آزمایش. |
| require_exp | require_exp | منطقی = نادرست | توکن بدون exp رد شود. |
| require_nbf | require_nbf | منطقی = نادرست | بدون nbf رد شود. |
| require_iat | require_iat | منطقی = نادرست | بدون iat رد شود. |
| require_sub | require_sub | منطقی = نادرست | بدون sub رد شود. |
| require_jti | require_jti | منطقی = نادرست | بدون jti رد شود. |
| check_typ | check_typ | منطقی = درست | نوع JWT بررسی شود. |
واردسازی جی دبلیو تی
روال ریشه:
سرچاپ جی دبلیو تی.الگوریتم اچ اس۲۵۶، جی دبلیو تی.الگوریتم اچ اس۳۸۴، جی دبلیو تی.الگوریتم اچ اس۵۱۲
سرچاپ جی دبلیو تی.الگوریتم پشتیبانی می شود("HS512")، جی دبلیو تی.الگوریتم پشتیبانی می شود("none")، جی دبلیو تی.اندازه چکیده("HS384")
ناپایا ا := جی دبلیو تی.ادعاهای جدید()
ا.sub = "7"
ا.jti = "t-1"
جی دبلیو تی.انقضا در(ا، ۳۶۰۰)
جی دبلیو تی.معتبر نه پیش از(ا، ۰)
ناپایا خطا := ۰
یک := جی دبلیو تی.امضای اچ اس۳۸۴(ا، "k"، خطا)
دو := جی دبلیو تی.امضای اچ اس۵۱۲(ا، "k"، خطا)
سه := جی دبلیو تی.امضا(ا، جی دبلیو تی.الگوریتم اچ اس۲۵۶، "k"، خطا)
چهار := جی دبلیو تی.امضا با شناسه کلید(ا، "HS256"، "key-2026"، "k"، خطا)
سرچاپ جی دبلیو تی.کدگشایی(یک، خطا).alg، جی دبلیو تی.کدگشایی(دو، خطا).alg، جی دبلیو تی.کدگشایی(چهار، خطا).kid
ت := جی دبلیو تی.تایید اچ اس۲۵۶(سه، "k"، خطا)
سرچاپ ت.valid، جی دبلیو تی.ثانیه های باقی مانده(ت) > ۳۵۰۰
ب := جی دبلیو تی.تایید(یک، "k"، جی دبلیو تی.گزینه ها برای("HS384")، خطا)
سرچاپ ب.valid
_ := جی دبلیو تی.تایید(یک، "k"، جی دبلیو تی.گزینه های پیش فرض()، خطا)
سرچاپ جی دبلیو تی.متن خطا(خطا)
خام := جی دبلیو تی.امضای جیسون(`{"sub":"1"}`، "HS256"، ""، "k"، خطا)
سرچاپ خام
د := جی دبلیو تی.کدگشایی(خام، خطا)
سرچاپ د.header_json، د.payload_json
سرچاپ جی دبلیو تی.امضای ورودی(د.signing_input، "HS256"، "k") == د.signature
کد := جی دبلیو تی.کدگذاری پایه۶۴ نشانی("سلام؟")
سرچاپ کد.طول()
ناپایا سالم := نادرست
سرچاپ جی دبلیو تی.کدگشایی پایه۶۴ نشانی(کد، سالم)، سالم
سرچاپ جی دبلیو تی.کدگذاری پایه۶۴ نشانی بایت("hi?" برگردان تهی*، ۳)
_ := جی دبلیو تی.امضای اچ اس۲۵۶(ا، ""، خطا)
سرچاپ خطا == جی دبلیو تی.خطای کلید خالی، جی دبلیو تی.متن خطا(خطا)
سرچاپ جی دبلیو تی.خطای پایه۶۴ معیوب، جی دبلیو تی.خطای جیسون معیوب، جی دبلیو تی.خطای الگوریتم پشتیبانی نشده، جی دبلیو تی.خطای ناهمخوانی الگوریتم
سرچاپ جی دبلیو تی.خطای هنوز معتبر نیست، جی دبلیو تی.خطای صدور در آینده، جی دبلیو تی.خطای صادرکننده، جی دبلیو تی.خطای مخاطب
سرچاپ جی دبلیو تی.متن خطا(جی دبلیو تی.خطای موضوع)، "/"، جی دبلیو تی.متن خطا(جی دبلیو تی.خطای ادعای ناموجود)، "/"، جی دبلیو تی.متن خطا(جی دبلیو تی.خطای نوع)
پایاننگهبان Guard
ساختار نگهبان| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| secret | secret | رشته = "" | کلید امضا. |
| opts | opts | گزینه ها | گزینههای بررسی. |
| cookie | cookie | رشته = "" | نام کوکیای که توکن از آن هم خوانده شود؛ خالی یعنی فقط سرآیند Authorization. |
| realm | realm | رشته = "api" | نامی که در سرآیند WWW-Authenticate میآید. |
واردسازی جی دبلیو تی
واردسازی شبکه.اچ تی تی پی شبکه
واردسازی شبکه.مسیریاب شبکه
ناپایا نگه := جی دبلیو تی.نگهبان جدید("راز-سرور-که-فقط-سرور-می-داند")
روال ورود(ز: صحیح۶۴):
ناپایا خطا := ۰
ناپایا ا := جی دبلیو تی.ادعاهای جدید()
ا.sub = "42"
جی دبلیو تی.تنظیم رشته(ا، "scope"، "read")
جی دبلیو تی.تنظیم خام(ا، "roles"، `["editor"]`)
توکن := جی دبلیو تی.صدور(نگه، ا، ۳۶۰۰، خطا)
جی دبلیو تی.تنظیم کوکی نشست ناامن(ز، نگه، توکن، ۳۶۰۰)
اچ تی تی پی شبکه.متن زمینه(ز، توکن)
پایان
روال من(ز: صحیح۶۴):
ناپایا ت := جی دبلیو تی.توکن {}
اگر جی دبلیو تی.نیاز(ز، نگه، ت):
اچ تی تی پی شبکه.متن زمینه(ز، "سلام کاربر " + ت.claims.sub)
پایان
پایان
روال مدیر(ز: صحیح۶۴):
ناپایا ت := جی دبلیو تی.توکن {}
اگر جی دبلیو تی.نیاز به دامنه(ز، نگه، "admin"، ت):
اچ تی تی پی شبکه.متن زمینه(ز، "پنل مدیر")
پایان
پایان
روال ویرایش(ز: صحیح۶۴):
ناپایا ت := جی دبلیو تی.توکن {}
اگر جی دبلیو تی.نیاز به ادعا(ز، نگه، "roles"، "editor"، ت):
اچ تی تی پی شبکه.متن زمینه(ز، "ویرایشگر")
پایان
پایان
روال پرونده(ز: صحیح۶۴):
ناپایا ت := جی دبلیو تی.توکن {}
اگر جی دبلیو تی.نیاز به موضوع(ز، نگه، اچ تی تی پی شبکه.پارامتر زمینه(ز، "id")، ت):
اچ تی تی پی شبکه.متن زمینه(ز، "پروندهی خودت")
پایان
پایان
روال بررسی دستی(ز: صحیح۶۴):
ناپایا خطا := ۰
ت := جی دبلیو تی.بررسی(ز، نگه، خطا)
اگر جی دبلیو تی.توکن حامل(ز).طول() == ۰ و جی دبلیو تی.توکن از(ز، نگه).طول() == ۰:
جی دبلیو تی.بدون گواهی(ز، نگه)
وگرنه خطا != جی دبلیو تی.بدون خطا:
جی دبلیو تی.غیرمجاز(ز، نگه، جی دبلیو تی.متن خطا(خطا))
وگرنه ت.claims.sub == "0":
جی دبلیو تی.ممنوع(ز، "کاربر مسدود است")
وگرنه:
اچ تی تی پی شبکه.متن زمینه(ز، "معتبر")
پایان
پایان
روال خروج(ز: صحیح۶۴):
جی دبلیو تی.پاک کردن کوکی نشست(ز، نگه)
اچ تی تی پی شبکه.متن زمینه(ز، "خارج شدید")
پایان
روال ریشه:
نگه.cookie = "session"
ناپایا م := مسیریاب شبکه.مسیریاب جدید()
مسیریاب شبکه.ارسال(م، "/login"، ورود)
مسیریاب شبکه.دریافت(م، "/me"، من)
مسیریاب شبکه.دریافت(م، "/admin"، مدیر)
مسیریاب شبکه.دریافت(م، "/edit"، ویرایش)
مسیریاب شبکه.دریافت(م، "/users/:id"، پرونده)
مسیریاب شبکه.دریافت(م، "/check"، بررسی دستی)
مسیریاب شبکه.ارسال(م، "/logout"، خروج)
ناپایا س := اچ تی تی پی شبکه.سرور جدید(۱۹۶۱۰)
اچ تی تی پی شبکه.استفاده(س، م)
_ := اچ تی تی پی شبکه.اجرا در پس زمینه(س)
پایه := "http://127.0.0.1:19610"
ورود پاسخ := اچ تی تی پی شبکه.ارسال(پایه + "/login"، "")
توکن := اچ تی تی پی شبکه.بدنه(ورود پاسخ)
سرچاپ اچ تی تی پی شبکه.نگاشت کوکی(ورود پاسخ).دریافت("session") == توکن
ناپایا سر := اچ تی تی پی شبکه.سرصفحه جدید()
سر.درج("Authorization"، "Bearer " + توکن)
سرچاپ جی دبلیو تی.تجزیه حامل("Bearer " + توکن) == توکن
بپرس(پایه، "/me"، سر)
بپرس(پایه، "/admin"، سر)
بپرس(پایه، "/edit"، سر)
بپرس(پایه، "/users/42"، سر)
بپرس(پایه، "/users/7"، سر)
بپرس(پایه، "/check"، سر)
بپرس(پایه، "/me"، اچ تی تی پی شبکه.سرصفحه جدید())
ناپایا بد := اچ تی تی پی شبکه.سرصفحه جدید()
بد.درج("Authorization"، "Bearer x.y.z")
بپرس(پایه، "/check"، بد)
ناپایا کوکی := اچ تی تی پی شبکه.سرصفحه جدید()
کوکی.درج("Cookie"، "session=" + توکن)
بپرس(پایه، "/me"، کوکی)
ناپایا دسترسی := ""
ناپایا تازهسازی := ""
ناپایا خطا := ۰
سرچاپ جی دبلیو تی.صدور جفت(نگه، "42"، ۹۰۰، ۸۶۴۰۰، دسترسی، تازهسازی، خطا)، دسترسی != تازهسازی
یک := جی دبلیو تی.صدور برای(نگه، "42"، ۶۰، خطا)
سرچاپ جی دبلیو تی.تایید(یک، نگه.secret، نگه.opts، خطا).claims.sub، نگه.realm
پایان
روال بپرس(پایه: رشته، مسیر: رشته، سر: نگاشت<رشته، رشته>):
پ := اچ تی تی پی شبکه.دریافت با(پایه + مسیر، سر)
سرچاپ مسیر، اچ تی تی پی شبکه.وضعیت(پ)، اچ تی تی پی شبکه.بدنه(پ)
پایانپایاها و متغیرها
الگوریتم اچ اس۲۵۶ JWT_HS256
پایا الگوریتم اچ اس۲۵۶: رشته = "HS256"نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
الگوریتم اچ اس۳۸۴ JWT_HS384
پایا الگوریتم اچ اس۳۸۴: رشته = "HS384"نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
الگوریتم اچ اس۵۱۲ JWT_HS512
پایا الگوریتم اچ اس۵۱۲: رشته = "HS512"نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
بدون خطا JWT_OK
پایا بدون خطا: صحیح۳۲ = 0نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
خطای قالب توکن JWT_ERR_MALFORMED
پایا خطای قالب توکن: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
خطای پایه۶۴ معیوب JWT_ERR_BAD_BASE64
پایا خطای پایه۶۴ معیوب: صحیح۳۲ = 2نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای جیسون معیوب JWT_ERR_BAD_JSON
پایا خطای جیسون معیوب: صحیح۳۲ = 3نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای الگوریتم پشتیبانی نشده JWT_ERR_ALG_UNSUPPORTED
پایا خطای الگوریتم پشتیبانی نشده: صحیح۳۲ = 4none.نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای ناهمخوانی الگوریتم JWT_ERR_ALG_MISMATCH
پایا خطای ناهمخوانی الگوریتم: صحیح۳۲ = 5نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای امضا JWT_ERR_SIGNATURE
پایا خطای امضا: صحیح۳۲ = 6نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
خطای انقضا JWT_ERR_EXPIRED
پایا خطای انقضا: صحیح۳۲ = 7نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
خطای هنوز معتبر نیست JWT_ERR_NOT_YET_VALID
پایا خطای هنوز معتبر نیست: صحیح۳۲ = 8nbf هنوز نرسیده.نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای صدور در آینده JWT_ERR_ISSUED_IN_FUTURE
پایا خطای صدور در آینده: صحیح۳۲ = 9نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای صادرکننده JWT_ERR_ISSUER
پایا خطای صادرکننده: صحیح۳۲ = 10نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای مخاطب JWT_ERR_AUDIENCE
پایا خطای مخاطب: صحیح۳۲ = 11نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای موضوع JWT_ERR_SUBJECT
پایا خطای موضوع: صحیح۳۲ = 12نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای ادعای ناموجود JWT_ERR_MISSING_CLAIM
پایا خطای ادعای ناموجود: صحیح۳۲ = 13نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای کلید خالی JWT_ERR_EMPTY_SECRET
پایا خطای کلید خالی: صحیح۳۲ = 14نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
خطای نوع JWT_ERR_TYPE
پایا خطای نوع: صحیح۳۲ = 15JWT نیست.نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
روالها
دارد Has
روال دارد(t: توکن، key: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
خام Raw
روال خام(t: توکن، key: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
رشته Str
روال رشته(t: توکن، key: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
عدد Int
روال عدد(t: توکن، key: رشته): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
منطقی Bool
روال منطقی(t: توکن، key: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
مخاطب دارد HasAudience
روال مخاطب دارد(t: توکن، want: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
فهرست دارد ListHas
روال فهرست دارد(t: توکن، key: رشته، want: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
دامنه دارد HasScope
روال دامنه دارد(t: توکن، want: رشته): منطقیscope، که دامنهها را با فاصله جدا میکند، این دامنه را دارد.نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
ثانیه های باقی مانده SecondsRemaining
روال ثانیه های باقی مانده(t: توکن): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
الگوریتم پشتیبانی می شود IsSupportedAlg
روال الگوریتم پشتیبانی می شود(alg: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
اندازه چکیده DigestSize
روال اندازه چکیده(alg: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
متن خطا ErrorText
روال متن خطا(code: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
ادعاهای جدید NewClaims
روال ادعاهای جدید(): ادعاهانمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
تنظیم رشته SetStr
روال تنظیم رشته(c &: ادعاها، key: رشته، value: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
تنظیم عدد SetInt
روال تنظیم عدد(c &: ادعاها، key: رشته، value: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
تنظیم منطقی SetBool
روال تنظیم منطقی(c &: ادعاها، key: رشته، value: منطقی)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
تنظیم خام SetRaw
روال تنظیم خام(c &: ادعاها، key: رشته، raw: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
انقضا در ExpiresIn
روال انقضا در(c &: ادعاها، seconds: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
معتبر نه پیش از NotBeforeIn
روال معتبر نه پیش از(c &: ادعاها، seconds: صحیح۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
جیسون ادعاها ClaimsJSON
روال جیسون ادعاها(c: ادعاها): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
گزینه های پیش فرض DefaultOptions
روال گزینه های پیش فرض(): گزینه هانمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
گزینه ها برای OptionsFor
روال گزینه ها برای(alg: رشته): گزینه هانمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
کدگشایی Decode
روال کدگشایی(token: رشته، err &: صحیح): توکننمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
تایید Verify
روال تایید(token: رشته، secret: رشته، opts: گزینه ها، err &: صحیح): توکننمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
تایید اچ اس۲۵۶ VerifyHS256
روال تایید اچ اس۲۵۶(token: رشته، secret: رشته، err &: صحیح): توکننمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
معتبر است IsValid
روال معتبر است(token: رشته، secret: رشته، opts: گزینه ها): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
کدگذاری پایه۶۴ نشانی بایت B64UrlEncodeBytes
روال کدگذاری پایه۶۴ نشانی بایت(p: تهی*، n: صحیح): رشته= تبدیل میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
کدگذاری پایه۶۴ نشانی B64UrlEncode
روال کدگذاری پایه۶۴ نشانی(s: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
کدگشایی پایه۶۴ نشانی B64UrlDecode
روال کدگشایی پایه۶۴ نشانی(s: رشته، ok &: منطقی): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
امضای جیسون SignJSON
روال امضای جیسون(payload_json: رشته، alg: رشته، kid: رشته، secret: رشته، err &: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
امضای ورودی SignatureOf
روال امضای ورودی(signing_input: رشته، alg: رشته، secret: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
امضا با شناسه کلید SignWithKid
روال امضا با شناسه کلید(c: ادعاها، alg: رشته، kid: رشته، secret: رشته، err &: صحیح): رشتهامضا، با شناسهی کلید در سرآیند؛ برای چرخاندن کلیدها.نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
امضا Sign
روال امضا(c: ادعاها، alg: رشته، secret: رشته، err &: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
امضای اچ اس۲۵۶ SignHS256
روال امضای اچ اس۲۵۶(c: ادعاها، secret: رشته، err &: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Sign.salam
امضای اچ اس۳۸۴ SignHS384
روال امضای اچ اس۳۸۴(c: ادعاها، secret: رشته، err &: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
امضای اچ اس۵۱۲ SignHS512
روال امضای اچ اس۵۱۲(c: ادعاها، secret: رشته، err &: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
صدور Issue
روال صدور(g: نگهبان، c: ادعاها، ttl: صحیح۶۴، err &: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Algorithms.salam
صدور برای IssueFor
روال صدور برای(g: نگهبان، subject: رشته، ttl: صحیح۶۴، err &: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
صدور جفت IssuePair
روال صدور جفت(g: نگهبان، subject: رشته، access_ttl: صحیح۶۴، refresh_ttl: صحیح۶۴، access &: رشته، refresh &: رشته، err &: صحیح): منطقیkind آنها را از هم جدا میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
تنظیم کوکی نشست SetSessionCookie
روال تنظیم کوکی نشست(ctx: صحیح۶۴، g: نگهبان، token: رشته، max_age: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
تنظیم کوکی نشست ناامن SetSessionCookieInsecure
روال تنظیم کوکی نشست ناامن(ctx: صحیح۶۴، g: نگهبان، token: رشته، max_age: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
پاک کردن کوکی نشست ClearSessionCookie
روال پاک کردن کوکی نشست(ctx: صحیح۶۴، g: نگهبان)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
نگهبان جدید NewGuard
روال نگهبان جدید(secret: رشته): نگهباننمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
تجزیه حامل ParseBearer
روال تجزیه حامل(header_value: رشته): رشتهBearer ... جدا میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
توکن حامل BearerToken
روال توکن حامل(ctx: صحیح۶۴): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
توکن از TokenFrom
روال توکن از(ctx: صحیح۶۴، g: نگهبان): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
بررسی Check
روال بررسی(ctx: صحیح۶۴، g: نگهبان، err &: صحیح): توکننمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
غیرمجاز Unauthorized
روال غیرمجاز(ctx: صحیح۶۴، g: نگهبان، reason: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
بدون گواهی MissingCredential
روال بدون گواهی(ctx: صحیح۶۴، g: نگهبان)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
ممنوع Forbidden
روال ممنوع(ctx: صحیح۶۴، reason: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
نیاز Require
روال نیاز(ctx: صحیح۶۴، g: نگهبان، t &: توکن): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
نیاز به دامنه RequireScope
روال نیاز به دامنه(ctx: صحیح۶۴، g: نگهبان، scope: رشته، t &: توکن): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
نیاز به ادعا RequireClaim
روال نیاز به ادعا(ctx: صحیح۶۴، g: نگهبان، key: رشته، value: رشته، t &: توکن): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam
نیاز به موضوع RequireSubject
روال نیاز به موضوع(ctx: صحیح۶۴، g: نگهبان، subject: رشته، t &: توکن): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: jwt-Guard.salam