مائیکروسافٹ گراف API ای میل بھیجنے کی خرابیوں کا ازالہ کرنا
کا سامنا کرنا OrganizationFromTenantGuidNotFound خرابی۔ کے ساتھ ای میل بھیجنے کی کوشش کرتے وقت مائیکروسافٹ گراف API مایوس کن ہو سکتا ہے، خاص طور پر جب یہ اہم کام کے بہاؤ کو روکتا ہے۔ اس خرابی کا عام طور پر مطلب یہ ہے کہ API فراہم کردہ کرایہ دار GUID کی بنیاد پر ایک درست کرایہ دار کا پتہ نہیں لگا سکا۔
یہ مسئلہ پیچیدہ معلوم ہوسکتا ہے، لیکن یہ عام طور پر کنفیگریشن کی ترتیبات سے متعلق ہوتا ہے، خاص طور پر آپ کے ارد گرد Azure AD کرایہ دار سیٹ اپ یا تصدیق کی تفصیلات۔ یہ سمجھنا کہ اس خرابی کو کیا متحرک کرتا ہے اسے مؤثر طریقے سے حل کرنے کی کلید ہے۔
اس گائیڈ میں، ہم OrganizationFromTenantGuidNotFound کی خرابی کے عام اسباب اور ان کا تدارک کرنے کا طریقہ دیکھیں گے۔ ہم آپ کی تصدیق کرنے کا طریقہ دریافت کریں گے۔ کرایہ دار کی شناخت، توثیق کے پیرامیٹرز کو چیک کریں، اور اجازتوں کی توثیق کریں۔
درست ٹربل شوٹنگ کے اقدامات کے ساتھ، آپ اپنی API کالز کو ٹریک پر واپس لا سکتے ہیں اور ہموار ای میل بھیجنے کی فعالیت کو یقینی بنا سکتے ہیں۔ آئیے اس بات پر غور کریں کہ اس خرابی کی وجہ کیا ہے اور اسے حل کرنے کے اقدامات۔
حکم | استعمال کی مثال |
---|---|
GenericProvider | ایک OAuth2 فراہم کنندہ مثال بناتا ہے جو خاص طور پر Microsoft Graph API کی توثیق کے لیے ترتیب دیا گیا ہے۔ یہ OAuth کی تمام تفصیلات جیسے کہ کلائنٹ ID، کلائنٹ سیکریٹ، ری ڈائریکٹ URIs، اور Microsoft کے شناختی پلیٹ فارم کے لیے تیار کردہ اجازت کے URLs کا نظم کرتا ہے۔ |
getAuthorizationUrl() | مائیکروسافٹ کے اجازت نامے کے صفحے پر یو آر ایل تیار کرتا ہے، جہاں صارف لاگ ان کر سکتے ہیں اور اجازتیں دے سکتے ہیں۔ اس URL میں توثیق کے عمل کو محفوظ بنانے اور ضروری API رسائی کی اجازتیں فراہم کرنے کے لیے درکار دائرہ کار اور ریاستی پیرامیٹرز شامل ہیں۔ |
http_build_query() | ارے کو URL-انکوڈ شدہ استفسار کے تاروں کے طور پر انکوڈ کرنے کے لیے استعمال کیا جاتا ہے، POST درخواستوں کے لیے باڈی کی تخلیق کو آسان بناتا ہے، خاص طور پر cURL میں، جہاں مخصوص پیرامیٹرز (جیسے grant_type اور کلائنٹ کی اسناد) کو URL-encoded اور مناسب طریقے سے فارمیٹ کیا جانا چاہیے۔ |
curl_init() | ایک نئے سی آر ایل سیشن کا آغاز کرتا ہے، اس تناظر میں ٹوکن جنریشن کے لیے مائیکروسافٹ کے تصدیقی اختتامی نقطہ کی درخواست کی تیاری کے لیے ضروری ہے، جس سے مائیکروسافٹ گراف API اینڈ پوائنٹس کے ساتھ براہ راست تعامل ممکن ہے۔ |
curl_setopt() | سی یو آر ایل سیشن کے اختیارات کو ترتیب دیتا ہے، جس میں اس معاملے میں یو آر ایل تک رسائی حاصل کرنے کی ترتیبات، HTTP ہیڈرز، اور درخواست کی قسم (جیسے، POST) شامل ہیں۔ یہاں، ہر آپشن کو Microsoft Graph API کی مخصوص درخواست کی ضروریات کے مطابق بنایا گیا ہے۔ |
curl_exec() | تیار کردہ سی آر ایل سیشن کو انجام دیتا ہے، درخواست کو مخصوص اختتامی نقطہ پر بھیجتا ہے اور جواب کو حاصل کرتا ہے۔ یہ خاص طور پر حقیقی وقت میں API کے جوابات، جیسے غلطی کے پیغامات یا ٹوکنز کو کیپچر کرنے کے لیے مفید ہے۔ |
base64_encode() | ڈیٹا کو Base64 فارمیٹ میں انکوڈ کرتا ہے، جو یہاں OAuth فلو میں اسٹیٹ پیرامیٹر کو انکوڈ کرنے کے لیے استعمال ہوتا ہے، اس بات کو یقینی بنا کر اضافی سیکیورٹی اور سالمیت فراہم کرتا ہے کہ اسٹیٹ ڈیٹا کو ٹرانسمیشن کے لیے محفوظ طریقے سے انکوڈ کیا گیا ہے۔ |
assertStringContainsString() | ایک یونٹ ٹیسٹ کا دعویٰ جو چیک کرتا ہے کہ آیا دی گئی سٹرنگ (جیسے Microsoft کے لاگ ان کے لیے بنیادی URL) اجازت کے URL میں موجود ہے۔ یہ توثیق کرنے کے لیے بہت اہم ہے کہ تیار کردہ یو آر ایل مائیکروسافٹ گراف API کے تقاضوں کے مطابق ہیں۔ |
assertNotFalse() | اس بات کی توثیق کرتا ہے کہ cURL پر عمل درآمد کا جواب کامیاب ہے اور غلط نہیں ہے، اس بات کو یقینی بناتا ہے کہ Microsoft Graph API کو cURL کی درخواست پر صحیح طریقے سے کارروائی کی گئی تھی اور کنفیگریشن یا کنیکٹیویٹی کے مسائل کی وجہ سے ناکام نہیں ہوئی تھی۔ |
مائیکروسافٹ گراف API کی توثیق میں کرایہ دار کی غلطیوں کو حل کرنا
کا استعمال کرتے وقت فراہم کردہ اسکرپٹ ایک عام مسئلہ کو حل کرتے ہیں۔ مائیکروسافٹ گراف API ای میلز بھیجنے کے لیے: OrganizationFromTenantGuidNotFound ایرر۔ یہ خرابی اس وقت ہوتی ہے جب API دیئے گئے کرایہ دار ID سے وابستہ کرایہ دار کو تلاش کرنے میں ناکام ہو جاتا ہے۔ اس کو حل کرنے کے لیے، ہم پی ایچ پی کا استعمال کرتے ہیں۔ عام فراہم کنندہ توثیق کے بہاؤ کو سنبھالنے کے لیے OAuth2 کلائنٹ پیکج سے کلاس۔ GenericProvider ضروری ہے کیونکہ یہ Microsoft کے OAuth2 اینڈ پوائنٹس سے جڑنے کی پیچیدگی کو ختم کرتا ہے، جس سے ڈویلپرز کو کلائنٹ کی اسناد، کرایہ دار ID، اور ٹوکنز تک رسائی کے لیے ضروری یو آر ایل کی وضاحت کرنے دیتا ہے۔ ترتیب کلائنٹ ID، کلائنٹ سیکرٹ، ری ڈائریکٹ URI، اور مائیکروسافٹ کی شناختی سروس کے مطابق بنائے گئے اختتامی نکات کا استعمال کرتی ہے، سیٹ اپ کے عمل کو آسان بناتی ہے۔
پہلی مثال میں، ہم اجازت دینے والے URL کو بنانے پر توجہ مرکوز کرتے ہیں، جس میں صارفین کو لاگ ان کرنے اور ای میل بھیجنے کے دائرہ کار کی اجازت دینے کی ضرورت ہوتی ہے۔ getAuthorizationUrl فنکشن اس URL کو مخصوص اسکوپس جیسے 'openid'، 'email'، اور 'offline_access' کے ساتھ تخلیق کرتا ہے۔ URL میں 'state' پیرامیٹر، base64_encode اور json_encode کا استعمال کرتے ہوئے تیار کیا گیا، سیشن کے لیے مخصوص معلومات کو انکوڈنگ کر کے ایک اضافی حفاظتی پرت کا اضافہ کرتا ہے۔ یہ OAuth بہاؤ کی سالمیت کو یقینی بناتے ہوئے کراس سائٹ ریکوئسٹ فورجی (CSRF) حملوں سے بچاتا ہے۔ نتیجے میں آنے والا اجازت نامہ یو آر ایل صارفین کو مائیکروسافٹ کے لاگ ان صفحہ پر بھیجے گا، اور انہیں مخصوص اجازتوں کی اجازت دینے کا اشارہ دے گا۔ کامیاب لاگ ان ہونے پر، مائیکروسافٹ صارفین کو اجازت کے کوڈ کے ساتھ ری ڈائریکٹ URI پر بھیجتا ہے، جسے ایپلیکیشن ایک رسائی ٹوکن کے بدلے کر سکتی ہے۔
ایسے معاملات کے لیے جن میں براہ راست درخواست کی ضرورت ہوتی ہے، دوسرا اسکرپٹ استعمال کرتا ہے۔ cURL API تعامل کے لیے۔ ٹوکن کی درخواست کو دستی طور پر بنا کر، ہم لائبریریوں کی ضرورت کو نظرانداز کرتے ہیں، اسے ہلکے وزن یا جانچ کے منظرناموں کے لیے مثالی بناتے ہیں۔ اسکرپٹ پیرامیٹرز جیسے client_id، client_secret، اور grant_type کو POST ڈیٹا کے طور پر http_build_query فنکشن کا استعمال کرتے ہوئے سیٹ کرتا ہے، جو ڈیٹا کو URL کے محفوظ فارمیٹ میں انکوڈ کرتا ہے۔ ٹوکن کی درخواست کو پھر curl_init اور curl_setopt کا استعمال کرتے ہوئے مناسب OAuth2 اینڈ پوائنٹ پر بھیجا جاتا ہے، ہیڈرز، HTTP طریقوں اور ڈیٹا فیلڈز کو ہینڈل کرنے کے لیے ترتیب دیا گیا ہے۔ curl_exec پر عمل درآمد درخواست بھیجتا ہے، اور اس کے نتیجے میں آنے والا جواب (ایکسیس ٹوکن یا غلطی کی تفصیلات پر مشتمل) کو Microsoft Graph API میں مزید درخواستوں کے لیے استعمال کیا جا سکتا ہے۔
مزید برآں، ہم نے ہر اسکرپٹ کی توثیق کرنے کے لیے یونٹ ٹیسٹ شامل کیے ہیں۔ پہلا یونٹ ٹیسٹ چیک کرتا ہے کہ آیا تیار کردہ اجازت نامہ URL میں Microsoft کا لاگ ان ڈومین شامل ہے، URL فارمیٹ کی تصدیق کرتا ہے۔ ایک اور ٹیسٹ اس بات کو یقینی بناتا ہے کہ cURL کی درخواستیں ناکام نہیں ہوتی ہیں، تصدیق کے اختتامی نقطہ سے کامیاب کنکشن کی تصدیق کرتی ہے۔ یہ ٹیسٹ اس بات کا اعتماد فراہم کرتے ہیں کہ کنفیگریشنز درست طریقے سے سیٹ کی گئی ہیں اور API کی درخواستیں فعال ہیں، جو کہ پیداواری ماحول میں اہم ہے۔ لائبریری پر مبنی اور دستی دونوں درخواستوں کو سنبھال کر، یہ اسکرپٹ اور ٹیسٹ Microsoft کے گراف API کے ساتھ تصدیق کرنے کے لیے مضبوط اختیارات پیش کرتے ہیں، جس سے لچک، خرابی سے نمٹنے، اور ماڈیولر ڈیزائن کی اجازت ملتی ہے جو مختلف پروجیکٹ کی ضروریات کے مطابق ہو سکتے ہیں۔
مائیکروسافٹ گراف API میں تنظیم سے ہینڈلنگ ٹیننٹ گائیڈ ناٹ فائونڈ کی خرابی
جنرک پرووائیڈر اور مائیکروسافٹ گراف API کا استعمال کرتے ہوئے پی ایچ پی اسکرپٹ
$provider = new GenericProvider([
'clientId' => $config['microsoft']['clientId'],
'clientSecret' => $config['microsoft']['clientSecret'],
'redirectUri' => $redirectUrl,
'urlAuthorize' => $config['microsoft']['loginBaseUrl'] . "/" . $config['microsoft']['tenantId'] . "/oauth2/v2.0/authorize",
'urlAccessToken' => $config['microsoft']['loginBaseUrl'] . "/" . $config['microsoft']['tenantId'] . "/oauth2/v2.0/token",
'urlResourceOwnerDetails' => "https://graph.microsoft.com/v1.0/me",
]);
$scope = 'openid email profile https://graph.microsoft.com/.default offline_access';
$authUrl = $provider->getAuthorizationUrl([
'scope' => $scope,
'state' => base64_encode(json_encode($state))
]);
براہ راست API کی درخواست کے لیے cURL کا استعمال کرتے ہوئے متبادل حل
مائیکروسافٹ گراف API کی درخواست بھیجنے کے لیے cURL پر مبنی حل
$tenantId = $config['microsoft']['tenantId'];
$clientId = $config['microsoft']['clientId'];
$clientSecret = $config['microsoft']['clientSecret'];
$url = "https://login.microsoftonline.com/{$tenantId}/oauth2/v2.0/token";
$headers = ['Content-Type: application/x-www-form-urlencoded'];
$body = http_build_query([
'client_id' => $clientId,
'client_secret' => $clientSecret,
'scope' => "https://graph.microsoft.com/.default",
'grant_type' => "client_credentials"
]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
یونٹ ٹیسٹ کے ساتھ سکرپٹ کی جانچ اور توثیق
مائیکروسافٹ گراف API انٹیگریشن کی تصدیق کے لیے PHPUnit ٹیسٹ
use PHPUnit\Framework\TestCase;
class MicrosoftGraphAPITest extends TestCase {
public function testAuthorizationUrl() {
global $provider, $scope, $state;
$authUrl = $provider->getAuthorizationUrl(['scope' => $scope, 'state' => $state]);
$this->assertStringContainsString("https://login.microsoftonline.com", $authUrl);
}
public function testCurlResponse() {
global $ch;
$response = curl_exec($ch);
$this->assertNotFalse($response);
}
}
مائیکروسافٹ گراف API توثیق میں کرایہ دار GUID کے مسائل کو سمجھنا
دی OrganizationFromTenantGuidNotFound مائیکروسافٹ گراف API میں خرابی عام طور پر اس بات کی نشاندہی کرتی ہے کہ API کی درخواست کے دوران بیان کردہ کرایہ دار GUID Azure AD ڈائرکٹری میں واقع نہیں ہوسکتا ہے۔ یہ اکثر غلط کنفیگر شدہ کرایہ دار IDs یا Microsoft Graph API انضمام کے غلط سیٹ اپ کے نتیجے میں ہوتا ہے۔ Microsoft Azure میں ہر کرایہ دار کے پاس ایک منفرد شناخت کنندہ ہوتا ہے جسے کرایہ دار GUID کہا جاتا ہے، جو اس بات کو یقینی بناتا ہے کہ درخواستیں درست تنظیمی سیاق و سباق کی طرف بھیجی جائیں۔ اگر کرایہ دار GUID غلط ہے یا غائب ہے، تو Microsoft Graph API تنظیم کا پتہ نہیں لگا سکتا، جس کے نتیجے میں تصدیق ناکام ہو جاتی ہے۔ API کی درخواستوں میں کرایہ دار GUID کے کردار کو سمجھنا ایسے مسائل کو جلد حل کرنے کی کلید ہے۔
درست سیٹ اپ کو یقینی بنانے میں تصدیق کرنا شامل ہے۔ کرایہ دار کی شناخت Azure Active Directory میں اور اس بات کی تصدیق کرنا کہ یہ آپ کی ایپلیکیشن کی تصدیق کی ترتیبات میں ترتیب سے میل کھاتا ہے۔ بعض اوقات، ڈویلپرز غلطی سے کرایہ دار GUID کے بجائے ڈائریکٹری ID یا ایپلیکیشن ID استعمال کرتے ہیں، جس سے یہ مسئلہ پیدا ہوتا ہے۔ مزید برآں، مائیکروسافٹ گراف API میں ملٹی کرایہ دار سیٹ اپ کا استعمال کرنے کے لیے دوسرے کرایہ داروں کے ڈیٹا تک رسائی کے لیے اجازتوں کی وضاحت کی ضرورت ہوتی ہے۔ اجازتوں کو درست طریقے سے ترتیب دینے یا صحیح GUID کی وضاحت کرنے میں ناکامی API کے ذریعے ڈیٹا تک رسائی یا بھیجنے کی کوشش کرتے وقت خرابیوں کا باعث بن سکتی ہے۔
Azure AD کے اندر رسائی کنٹرول کی پالیسیوں کا جائزہ لینا بھی مفید ہے، کیونکہ منتظمین صارف کے کردار یا حفاظتی پالیسیوں کی بنیاد پر مخصوص وسائل تک رسائی کو محدود کر سکتے ہیں۔ مثال کے طور پر، کچھ صارفین کے پاس مخصوص کارروائیاں کرنے کی اجازت کی کمی ہو سکتی ہے اگر ان کا اکاؤنٹ محدود رسائی والے گروپ کا حصہ ہے۔ لہذا، Azure AD کے اندر GUID کی ترتیبات اور کردار کی اجازت دونوں کی تصدیق ضروری ہے۔ اگر مسائل برقرار رہتے ہیں تو، کرایہ داروں کی تشکیلات پر مائیکروسافٹ کی دستاویزات کی جانچ کرنا کثیر کرایہ دار ایپلی کیشنز کے تقاضوں پر اضافی وضاحت فراہم کر سکتا ہے، جس سے ڈویلپرز کو ان غلطیوں سے بچنے میں مدد مل سکتی ہے جو ان کے ورک فلو میں خلل ڈالتی ہیں۔
مائیکروسافٹ گراف API کرایہ دار کی غلطیوں پر عام سوالات
- OrganizationFromTenantGuidNotFound غلطی کا کیا مطلب ہے؟
- اس خرابی کا مطلب ہے کہ مائیکروسافٹ گراف API Azure Active Directory میں مخصوص کرایہ دار کا پتہ نہیں لگا سکتا۔ یہ ایک غلط یا لاپتہ کرایہ دار GUID کی وجہ سے ہو سکتا ہے۔
- میں Azure AD میں اپنے کرایہ دار GUID کی تصدیق کیسے کروں؟
- آپ Azure پورٹل میں لاگ ان ہو کر، Azure Active Directory پر جا کر، اور Tenant کی پراپرٹیز کو درست GUID کے لیے چیک کر کے کرایہ دار GUID کی تصدیق کر سکتے ہیں۔
- کیا غلط اجازتیں OrganizationFromTenantGuidNotFound کی خرابی کا سبب بن سکتی ہیں؟
- ہاں، ناکافی اجازتیں کرایہ دار تک رسائی کو روک سکتی ہیں۔ یقینی بنائیں کہ API کی اجازتیں درست طریقے سے سیٹ اور دی گئی ہیں، اور یہ کردار Microsoft Graph API کے لیے درکار رسائی کی سطح سے مماثل ہیں۔
- مجھے کیوں ضرورت ہے base64_encode میری اسکرپٹ میں کمانڈ؟
- دی base64_encode کمانڈ OAuth درخواستوں میں ریاستی ڈیٹا کو محفوظ طریقے سے انکوڈ کرنے میں مدد کرتا ہے، جس سے کراس سائٹ ریکوئسٹ جعل سازی (CSRF) حملوں کے خلاف تحفظ کی ایک اضافی پرت شامل ہوتی ہے۔
- صحیح کرایہ دار GUID ہونے کے باوجود اگر مجھے غلطی ہوئی تو مجھے کیا چیک کرنا چاہیے؟
- GUID کے علاوہ، تصدیق کریں کہ Azure AD میں درخواست کی رجسٹریشن اور اجازتیں Microsoft Graph API کی درخواست کے تقاضوں سے میل کھاتی ہیں۔
- کیا میں کرایہ دار GUID کی وضاحت کیے بغیر Microsoft Graph API استعمال کر سکتا ہوں؟
- واحد کرایہ دار ایپلی کیشنز میں، کرایہ دار GUID براہ راست کنفیگریشن میں بیان کیا جاتا ہے۔ اگر اجازتیں اور کنفیگریشن درست طریقے سے سیٹ کیے گئے ہیں تو ملٹی کرایہ دار ایپس کو اس کی ضرورت نہیں ہو سکتی۔
- کیسے کرتا ہے GenericProvider مائیکروسافٹ گراف API کی توثیق میں مدد؟
- دی GenericProvider URL مینجمنٹ کو خلاصہ کرکے اور Microsoft کے OAuth اینڈ پوائنٹس کے لیے فوری سیٹ اپ کو فعال کرکے OAuth2 کے نفاذ کو آسان بناتا ہے۔
- کیا GenericProvider کا استعمال کیے بغیر دستی طور پر رسائی ٹوکن حاصل کرنے کا کوئی طریقہ ہے؟
- جی ہاں، استعمال کرتے ہوئے cURL کمانڈز آپ کو مائیکروسافٹ کے ٹوکن اینڈ پوائنٹ پر کلائنٹ کی اسناد پوسٹ کرکے دستی طور پر رسائی ٹوکنز کو بازیافت کرنے کی اجازت دیتا ہے۔
- مائیکروسافٹ گراف API کے لئے عام توثیق کے دائرہ کار کیا ہیں؟
- عام دائرہ کار میں openid، ای میل، پروفائل، offline_access، اور https://graph.microsoft.com/.default شامل ہیں، جو مختلف ڈیٹا پوائنٹس اور اجازتوں تک رسائی فراہم کرتے ہیں۔
- اگر میری سی آر ایل کی درخواست ناکام ہوجاتی ہے تو میں کیسے ٹربل شوٹ کرسکتا ہوں؟
- چیک کریں کہ تمام پیرامیٹرز درست طریقے سے فارمیٹ کیے گئے ہیں، اور ہیڈرز کی تصدیق کریں، خاص طور پر مواد کی قسم، یہ یقینی بنانے کے لیے کہ API کو درست فارمیٹ میں درخواست موصول ہوئی ہے۔
مائیکروسافٹ گراف API میں کرایہ دار کی غلطیوں کو حل کرنے کے بارے میں حتمی خیالات
OrganizationFromTenantGuidNotFound جیسی توثیق کی غلطیوں سے نمٹنے کے دوران، درست کرایہ دار ID کنفیگریشن کی تصدیق Azure ایکٹو ڈائریکٹری ضروری ہے. یہ اکثر رابطے کے مسائل کو جلد حل کرتا ہے۔ درست تصدیق کا سیٹ اپ ایک اہم فرق کر سکتا ہے۔
آزمائشی طریقے استعمال کرنا، جیسے عام فراہم کنندہ یا cURL، ڈویلپرز کو کثیر کرایہ دار تک رسائی کے لیے صحیح اجازتوں اور ترتیبات کا فائدہ اٹھاتے ہوئے ہموار API درخواستوں کو یقینی بنانے میں مدد کرتا ہے۔ ان اقدامات پر عمل کر کے، زیادہ تر صارفین اس مسئلے کو فوری طور پر حل کر سکتے ہیں اور مائیکروسافٹ گراف کے ساتھ انضمام جاری رکھ سکتے ہیں۔
ذرائع اور حوالہ جات
- Azure Active Directory اور کرایہ دار کنفیگریشن کے مسائل کو حل کرنے کے بارے میں تفصیلی رہنمائی۔ مائیکروسافٹ Azure دستاویزی
- Microsoft Graph API کی توثیق اور ایرر کوڈز پر جامع دستاویزات بشمول OrganizationFromTenantGuidNotFound۔ مائیکروسافٹ گراف API کی خرابیاں
- OAuth2 انضمام کے بارے میں بصیرت اور PHP ایپلی کیشنز میں GenericProvider استعمال کرنے کے بہترین طریقے۔ OAuth2 پی ایچ پی لیگ کی دستاویزات