| GIT-CREDENTIAL(1) | دستورات عمومی کاربر | GIT-CREDENTIAL(1) |
نام (NAME)
git-credential - بازیابی و ذخیره اطلاعات احراز هویت کاربر
خلاصه دستور (SYNOPSIS)
'git credential' (fill|approve|reject|capability)
توضیحات (DESCRIPTION)
گیت دارای یک رابط داخلی برای ذخیره و بازیابی اطلاعات احراز هویت از برنامههای کمکی خاص سیستم، و همچنین درخواست نام کاربری و گذرواژه از کاربر است. دستور git-credential این رابط را در دسترس اسکریپتهایی قرار میدهد که ممکن است بخواهند اطلاعات احراز هویت را به همان شیوه گیت بازیابی، ذخیره یا از کاربر درخواست کنند. طراحی این رابط قابل اسکریپتنویسی، از API داخلی C الگوبرداری شده است؛ برای پیشزمینه بیشتر درباره مفاهیم، credential.h را ببینید.
دستور git-credential یک گزینه عملیات ("action") در خط فرمان دریافت میکند (یکی از fill، approve یا reject) و شرح اطلاعات احراز هویت را از ورودی استاندارد (stdin) میخواند (بخش «قالب ورودی/خروجی» را ببینید).
اگر عملیات برابر با fill باشد، git-credential تلاش خواهد کرد با خواندن فایلهای پیکربندی، ارتباط با برنامههای کمکی پیکربندیشده احراز هویت یا درخواست از کاربر، مشخصههای «username» و «password» را به شرح اضافه کند. سپس مشخصههای نام کاربری و گذرواژه از شرح اطلاعات احراز هویت همراه با مشخصههایی که از پیش ارائه شدهاند در خروجی استاندارد چاپ میشوند.
اگر عملیات برابر با approve باشد، git-credential شرح را برای تمام برنامههای کمکی پیکربندیشده احراز هویت ارسال میکند که ممکن است اطلاعات احراز هویت را برای استفادههای بعدی ذخیره کنند.
اگر عملیات برابر با reject باشد، git-credential شرح را برای تمام برنامههای کمکی پیکربندیشده احراز هویت ارسال میکند که ممکن است هرگونه اطلاعات احراز هویت ذخیرهشده منطبق با این شرح را پاک کنند.
اگر عملیات برابر با capability باشد، git-credential هر قابلیتی را که پشتیبانی میکند در خروجی استاندارد اعلام خواهد کرد.
اگر عملیات برابر با approve یا reject باشد، نباید هیچ خروجی تولید شود.
کاربرد متداول GIT CREDENTIAL (TYPICAL USE OF GIT CREDENTIAL)
برنامهای که از git-credential استفاده میکند، معمولاً با دنبال کردن این مراحل از git credential استفاده خواهد کرد:
برای نمونه، اگر گذرواژهای برای https://example.com/foo.git بخواهیم، ممکن است شرح اطلاعات احراز هویت زیر را تولید کنیم (خط خالی انتهای آن را فراموش نکنید؛ این خط به git credential اعلام میکند که برنامه، ارائه تمام اطلاعات موجود خود را به پایان رسانده است):
protocol=https host=example.com path=foo.git
protocol=https host=example.com username=bob password=secr3t
در بیشتر موارد، این بدان معناست که مشخصههای ارائهشده در ورودی، در خروجی تکرار خواهند شد، اما گیت ممکن است شرح اطلاعات احراز هویت را نیز تغییر دهد؛ برای نمونه، با حذف مشخصه path هنگامی که پروتکل HTTP(s) بوده و مقدار credential.useHttpPath برابر با false باشد.
اگر git credential از گذرواژه مطلع بود، این مرحله پیش از بازگرداندن password=secr3t ممکن است نیازی به تایپ واقعی این گذرواژه توسط کاربر نداشته باشد (کاربر ممکن است در عوض گذرواژهای برای باز کردن قفل دستهکلید (keychain) وارد کرده باشد، یا در صورتی که قفل دستهکلید از قبل باز بوده، هیچ تعاملی با کاربر انجام نشده باشد).
قالب ورودی/خروجی (INPUT/OUTPUT FORMAT)
دستور git credential (بسته به عملیات استفادهشده) اطلاعات احراز هویت را در ورودی/خروجی استاندارد خود میخواند و/یا مینویسد. این اطلاعات میتوانند مربوط به کلیدهایی باشند که git credential برای آنها اطلاعات ورود را به دست میآورد (برای نمونه host، protocol، path)، یا دادههای واقعی اطلاعات احراز هویت باشند که باید به دست آیند (username/password).
اطلاعات احراز هویت به مجموعهای از مشخصههای نامگذاریشده تقسیم میشود، به طوری که در هر خط یک مشخصه قرار دارد. هر مشخصه با یک جفت کلید-مقدار مشخص میشود که با یک علامت مساوی (=) از هم جدا شده و در انتهای آن یک خط جدید قرار میگیرد.
کلید میتواند شامل هر بایتی به جز =، خط جدید یا NUL باشد. مقدار میتواند شامل هر بایتی به جز خط جدید یا NUL باشد. برای اینکه پیادهسازیها بتوانند پردازش را به صورت کارآمد انجام دهند، یک خط، شامل خط جدید انتهایی، نباید از ۶۵۵۳۵ بایت تجاوز کند.
مشخصههایی با کلیدهایی که به براکتهای آرایهای به سبک زبان C یعنی [] ختم میشوند میتوانند مقادیر متعددی داشته باشند. هر نمونه از یک مشخصه چندمقداری، یک فهرست مرتب از مقادیر را تشکیل میدهد - ترتیب مشخصههای تکرارشده، ترتیب مقادیر را مشخص میکند. یک مشخصه چندمقداری خالی (key[]=\n) برای پاک کردن ورودیهای قبلی و بازنشانی فهرست عمل میکند.
در تمام موارد، با همه بایتها بهصورت همانگونه که هستند رفتار میشود (یعنی هیچ نقلقولی وجود ندارد، و نمیتوان مقداری با خط جدید یا NUL در آن ارسال کرد). فهرست مشخصهها با یک خط خالی یا پایان فایل خاتمه مییابد.
گیت مشخصههای زیر را درک میکند:
protocol
host
path
username
password
password_expiry_utc
oauth_refresh_token
url
توجه داشته باشید که تعیین پروتکل اجباری است و اگر نشانی اینترنتی نام میزبان را مشخص نکند (برای نمونه، "cert:///path/to/file")، اطلاعات احراز هویت شامل یک مشخصه نام میزبان خواهد بود که مقدار آن یک رشته خالی است.
اجزایی که در نشانی اینترنتی وجود ندارند (برای نمونه، در مثال بالا نام کاربری وجود ندارد) بدون مقدار رها خواهند شد.
authtype
این مقدار نباید ارسال شود مگر اینکه قابلیت مناسب (زیر را ببینید) در ورودی ارائه شده باشد.
credential
این مقدار نباید ارسال شود مگر اینکه قابلیت مناسب (زیر را ببینید) در ورودی ارائه شده باشد.
ephemeral
برنامه کمکی احراز هویت همچنان با store یا erase فراخوانی میشود تا بتواند تعیین کند که آیا عملیات موفقیتآمیز بوده است یا خیر.
این مقدار نباید ارسال شود مگر اینکه قابلیت مناسب (زیر را ببینید) در ورودی ارائه شده باشد.
state[]
این مقدار نباید ارسال شود مگر اینکه قابلیت مناسب (زیر را ببینید) در ورودی ارائه شده باشد.
continue
این مقدار نباید ارسال شود مگر اینکه قابلیت مناسب (زیر را ببینید) در ورودی ارائه شده باشد. این مشخصه یکطرفه از طرف یک برنامه کمکی احراز هویت است تا اطلاعات را به گیت (یا سایر برنامههایی که git credential را فراخوانی میکنند) منتقل کند.
wwwauth[]
هر مقدار سرآیند WWW-Authenticate به عنوان یک مشخصه چندمقداری wwwauth[] ارسال میشود، جایی که ترتیب مشخصهها همان ترتیبی است که در پاسخ HTTP ظاهر میشوند. این مشخصه یکطرفه از طرف گیت است تا اطلاعات اضافی را به برنامههای کمکی احراز هویت منتقل کند.
capability[]
در حال حاضر دو قابلیت پشتیبانی میشوند. اولی authtype است که نشان میدهد مقادیر authtype، credential، و ephemeral درک میشوند. دومی state است که نشان میدهد مقادیر state[] و continue درک میشوند.
الزامی نیست که فقط به دلیل پشتیبانی از یک قابلیت از ویژگیهای اضافی استفاده شود، اما آنها نباید بدون وجود آن قابلیت ارائه شوند.
مشخصهها و قابلیتهای ناشناخته بدون سر و صدا نادیده گرفته میشوند.
قالب ورودی/خروجی قابلیتها (CAPABILITY INPUT/OUTPUT FORMAT)
برای دستور git credential capability، قالب کمی متفاوت است. نخست، یک اعلان version 0 برای نشان دادن نسخه فعلی پروتکل انجام میشود، و سپس هر قابلیت با خطی مانند capability authtype اعلام میگردد. برنامههای کمکی احراز هویت نیز میتوانند این قالب را پیادهسازی کنند، باز هم با آرگومان capability. ممکن است در آینده خطوط دیگری اضافه شوند؛ فراخوانندهها باید خطوطی را که متوجه نمیشوند نادیده بگیرند.
از آنجا که این یک بخش جدید از پروتکل برنامههای کمکی احراز هویت است، نسخههای قدیمیتر گیت و همچنین برخی از برنامههای کمکی ممکن است از آن پشتیبانی نکنند. اگر وضعیت خروج غیر صفر دریافت شود، یا اگر خط نخست با کلمه version و یک فاصله شروع نشود، فراخوانندهها باید فرض کنند که هیچ قابلیتی پشتیبانی نمیشود.
هدف از این قالب، متمایز ساختن آن از خروجی اطلاعات احراز هویت به شیوهای بدون ابهام است. استفاده از برنامههای کمکی بسیار ساده احراز هویت (برای نمونه، اسکریپتهای پوسته درونخطی) که همیشه خروجی یکسانی تولید میکنند ممکن است. استفاده از یک قالب متمایز به کاربران امکان میدهد بدون نگرانی در مورد پیادهسازی صحیح اعلان قابلیتها یا سردرگم کردن تصادفی فراخوانندگانی که برای قابلیتها پرسوجو میکنند، همچنان از این نحو استفاده نمایند.
گیت (GIT)
بخشی از مجموعه git(1)
| 2026-06-29 | Git 2.55.0 |