التكوين المستند إلى الملفات في مصادقة خدمة تطبيق Azure

باستخدام مصادقة خدمة التطبيق، يمكن تكوين إعدادات المصادقة باستخدام ملف. قد تحتاج إلى استخدام التكوين المستند إلى الملف لاستخدام قدرات معاينة معينة لمصادقة / تخويل App Service قبل أن يتم كشفها عبر واجهات برمجة تطبيقات Azure Resource Manager .

هام

تذكر أن البيانات الأساسية للتطبيق، وبالتالي هذا الملف، قد تنتقل بين البيئات، كما هو الحال مع الفتحات. من المحتمل أنك تريد تثبيت تسجيل تطبيق مختلف في كل فتحة، وفي هذه الحالات، يجب الاستمرار في استخدام أسلوب التكوين القياسي بدلا من استخدام ملف التكوين.

تمكين التكوين المستند إلى الملف

  1. قم بإنشاء ملف JSON جديد للتكوين الخاص بك في جذر مشروعك (تم نشره في C:\home\site\wwwroot في تطبيق الويب / الوظيفة). املأ التكوين المطلوب وفقا لمرجع التكوين المستند إلى الملف. إذا كان تعديل تكوين مدير موارد Azure موجود، فتأكد من ترجمة الخصائص التي التُقطت في المجموعة authsettings إلى ملف التكوين الخاص بك.

  2. تعديل التكوين الحالي، الذي التقطت في واجهات برمجة تطبيقات مدير موارد Azure ضمن Microsoft.Web/sites/<siteName>/config/authsettingsV2. لتعديله، يمكنك استخدام قالب Azure Resource Manager أو أداة مثل Azure Resource Explorer. ضمن مجموعة authsettingsV2، قم بتعيين خاصيتين (يمكنك إزالة الآخرين):

    1. تعيين platform.enabled إلى «true»
    2. تعيين platform.configFilePath إلى اسم الملف (على سبيل المثال، "auth.json")

إشعار

يختلف تنسيق platform.configFilePath بين الأنظمة الأساسية. في Windows، يتم دعم كل من المسارات النسبية والمطلقة. يوصى بالمسار النسبي. بالنسبة إلى Linux، يتم دعم المسارات المطلقة فقط حاليا، لذلك يجب أن تكون قيمة الإعداد "/home/site/wwwroot/auth.json" أو ما شابه ذلك.

بمجرد إجراء تحديث التكوين،’ ستُستخدم محتويات الملف لتعريف سلوك مصادقة خدمة التطبيق /التخويل لهذا هذا الموقع. إذا كنت ترغب في العودة إلى تكوين مدير مورد Azure، يمكنك القيام بذلك عن طريق إزالة تغيير الإعداد platform.configFilePath إلى خال.

مرجع ملف التكوين

يجب تخزين أي أسرار سيتم الرجوع إليها من ملف التكوين الخاص بك كإعدادات تطبيق. يمكنك تسمية الإعدادات بأي اسم تريده. ما عليك سوى التأكد من أن المراجع من ملف التكوين تستخدم نفس المفاتيح.

يستنفد التالي خيارات التكوين المحتملة داخل الملف:

{
    "platform": {
        "enabled": <true|false>
    },
    "globalValidation": {
        "unauthenticatedClientAction": "RedirectToLoginPage|AllowAnonymous|RejectWith401|RejectWith404",
        "redirectToProvider": "<default provider alias>",
        "excludedPaths": [
            "/path1",
            "/path2",
            "/path3/subpath/*"
        ]
    },
    "httpSettings": {
        "requireHttps": <true|false>,
        "routes": {
            "apiPrefix": "<api prefix>"
        },
        "forwardProxy": {
            "convention": "NoProxy|Standard|Custom",
            "customHostHeaderName": "<host header value>",
            "customProtoHeaderName": "<proto header value>"
        }
    },
    "login": {
        "routes": {
            "logoutEndpoint": "<logout endpoint>"
        },
        "tokenStore": {
            "enabled": <true|false>,
            "tokenRefreshExtensionHours": "<double>",
            "fileSystem": {
                "directory": "<directory to store the tokens in if using a file system token store (default)>"
            },
            "azureBlobStorage": {
                "sasUrlSettingName": "<app setting name containing the sas url for the Azure Blob Storage if opting to use that for a token store>"
            }
        },
        "preserveUrlFragmentsForLogins": <true|false>,
        "allowedExternalRedirectUrls": [
            "https://uri1.azurewebsites.net/",
            "https://uri2.azurewebsites.net/",
            "url_scheme_of_your_app://easyauth.callback"
        ],
        "cookieExpiration": {
            "convention": "FixedTime|IdentityDerived",
            "timeToExpiration": "<timespan>"
        },
        "nonce": {
            "validateNonce": <true|false>,
            "nonceExpirationInterval": "<timespan>"
        }
    },
    "identityProviders": {
        "azureActiveDirectory": {
            "enabled": <true|false>,
            "registration": {
                "openIdIssuer": "<issuer url>",
                "clientId": "<app id>",
                "clientSecretSettingName": "APP_SETTING_CONTAINING_AAD_SECRET",
            },
            "login": {
                "loginParameters": [
                    "paramName1=value1",
                    "paramName2=value2"
                ]
            },
            "validation": {
                "allowedAudiences": [
                    "audience1",
                    "audience2"
                ]
            }
        },
        "facebook": {
            "enabled": <true|false>,
            "registration": {
                "appId": "<app id>",
                "appSecretSettingName": "APP_SETTING_CONTAINING_FACEBOOK_SECRET"
            },
            "graphApiVersion": "v3.3",
            "login": {
                "scopes": [
                    "public_profile",
                    "email"
                ]
            },
        },
        "gitHub": {
            "enabled": <true|false>,
            "registration": {
                "clientId": "<client id>",
                "clientSecretSettingName": "APP_SETTING_CONTAINING_GITHUB_SECRET"
            },
            "login": {
                "scopes": [
                    "profile",
                    "email"
                ]
            }
        },
        "google": {
            "enabled": true,
            "registration": {
                "clientId": "<client id>",
                "clientSecretSettingName": "APP_SETTING_CONTAINING_GOOGLE_SECRET"
            },
            "login": {
                "scopes": [
                    "profile",
                    "email"
                ]
            },
            "validation": {
                "allowedAudiences": [
                    "audience1",
                    "audience2"
                ]
            }
        },
        "twitter": {
            "enabled": <true|false>,
            "registration": {
                "consumerKey": "<consumer key>",
                "consumerSecretSettingName": "APP_SETTING_CONTAINING TWITTER_CONSUMER_SECRET"
            }
        },
        "apple": {
            "enabled": <true|false>,
            "registration": {
                "clientId": "<client id>",
                "clientSecretSettingName": "APP_SETTING_CONTAINING_APPLE_SECRET"
            },
            "login": {
                "scopes": [
                    "profile",
                    "email"
                ]
            }
        },
        "openIdConnectProviders": {
            "<providerName>": {
                "enabled": <true|false>,
                "registration": {
                    "clientId": "<client id>",
                    "clientCredential": {
                        "clientSecretSettingName": "<name of app setting containing client secret>"
                    },
                    "openIdConnectConfiguration": {
                        "authorizationEndpoint": "<url specifying authorization endpoint>",
                        "tokenEndpoint": "<url specifying token endpoint>",
                        "issuer": "<url specifying issuer>",
                        "certificationUri": "<url specifying jwks endpoint>",
                        "wellKnownOpenIdConfiguration": "<url specifying .well-known/open-id-configuration endpoint - if this property is set, the other properties of this object are ignored, and authorizationEndpoint, tokenEndpoint, issuer, and certificationUri are set to the corresponding values listed at this endpoint>"
                    }
                },
                "login": {
                    "nameClaimType": "<name of claim containing name>",
                    "scopes": [
                        "openid",
                        "profile",
                        "email"
                    ],
                    "loginParameterNames": [
                        "paramName1=value1",
                        "paramName2=value2"
                    ],
                }
            },
            //...
        }
    }
}

المزيد من الموارد