Ziel: Hosten Sie eine ASP.NET-Webanwendung für Azure und verwenden Sie OAuth2 für Google, Twilio und SendGrid mit einer Datenbank für Benutzerinformationen.So verwenden Sie Anmeldeinformationen außerhalb von web.config für ASP.NET und Azure
Problem: Ich erhalte Fehler beim Veröffentlichen, wenn ich eine externe Konfigurationsdatei verwende, die meine "appSettings" in meiner Datei Web.config referenziert. In Azure habe ich auch Anmeldeinformationen für Google OAuth2 gespeichert, die die veröffentlichten Einstellungen von Web.config aufgrund meiner Nachforschungen und meines Verständnisses außer Kraft setzen. Wie kann ich meine code-sensitiven Anmeldeinformationen für Azure richtig und sicher verwenden und darauf verweisen?
Research: Ich habe für Schritt diesen Link Schritt -
https://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-deploy-aspnet-mvc-app-membership-oauth-sql-database/
Dieser Link führt auch zu einem anderen Link für Google OAuth2 Implementierung unten -
www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on#goog
dieses jedoch unsicher macht die vertraulichen Informationen in der Datei web.config, die in einem Sicherheitshinweis vermerkt sind, der hier zu sicheren/bewährten Verfahren für die Bereitstellung sensibler ASP.NET-Informationen in Azure führt -
www.asp.net/identity/overview/features-api/best-practices-for-deploying-passwords-and-other-sensitive-data-to-aspnet-and-azure
Mein Verständnis ist, dass die Referenzierung einer externen Datei, die die sensiblen Daten/Anmeldeinformationen aus der Datei web.config enthält, eine bewährte Methode ist. Ich stelle fest, dass IIS nicht die Datei * .config ausgibt und aufgrund des Verweises auf den Speicherort der referenzierten Konfigurationsdatei selbst "git add *" die vertraulichen Anmeldeinformationen nicht zum Repository hinzufügt.
Web.config - (Hinweis appSettings on line 2)
</connectionStrings>
<appSettings file="..\..\AppSettingsSecrets.config">
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
AppSettingsSecrets.config
<appSettings>
<!-- SendGrid-->
<add key="mailAccount" value="My mail account." />
<add key="mailPassword" value="My mail password." />
<!-- Twilio-->
<add key="TwilioSid" value="My Twilio SID." />
<add key="TwilioToken" value="My Twilio Token." />
<add key="TwilioFromPhone" value="+12065551234" />
<add key="GoogClientID" value="1.apps.googleusercontent.com" />
<add key="GoogClientSecret" value="My Google client secret." />
</appSettings>
Wie kann ich richtig/sicher meine ID und Geheimnis aus der AppSettingsSecrets.config Referenz aus innerhalb des Codes, der in Schritt 7 aufgeführt ist?
www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on#goog
Relevante Code ist unten aufgeführt (die unten für Google-Authentifizierung verwendet beachten):
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context and user manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
// Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
// Uncomment the following lines to enable logging in with third party login providers
//app.UseMicrosoftAccountAuthentication(
// clientId: "",
// clientSecret: "");
//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");
//app.UseFacebookAuthentication(
// appId: "",
// appSecret: "");
app.UseGoogleAuthentication(
clientId: "000-000.apps.googleusercontent.com",
clientSecret: "00000000000");
}
Zusätzlich im Tutorial Geheimnissen für die Bereitstellung dieser Informationen Zu aufgeführt:
When you deploy your web app to Azure, the AppSettingsSecrets.config file won't be deployed (that's what you want). You could go to the Azure Management Portal and set them manually, to do that:
1. Go to http://portal.azure.com, and sign in with your Azure credentials.
2. Click Browse > Web Apps, then click the name of your web app.
3. Click All settings > Application settings.
The app settings and connection string values override the same settings in the web.config file. In our example, we did not deploy these settings to Azure, but if these keys were in the web.config file, the settings shown on the portal would take precedence.
Das sagt mir, dass ich die sensiblen Informationen über das Portal manuell in Azure eingeben kann und (ich nehme an) dass dies eine sichere Methode ist, um die vertrauliche Anmeldeinformationen privat, während meine Webanwendung auf die Informationen zugreifen und diese nutzen kann. (mich bitte korrigieren, wenn ich falsch!) Allerdings, wenn ich manuell eingegeben diese Informationen jetzt meine Web-Anwendung einen Laufzeitfehler wirft, wie unten als Bildlink gezeigt:
Beliebig Vorschläge oder andere Links oder Hinweise/Tipps würden sehr geschätzt werden! Danke im Voraus!
EDIT: Nachdem die Custom in der Datei web.config ausschalten und Auffrischen des Azure Deployment dies der Fehler ist die Website jetzt ergibt - Im Wesentlichen ist mein Code nicht die gespeicherten Google OAuth2 Credentials zieht ich gespeichert habe in Azurblau. Wie erhalte ich meinen Code zum Abrufen der in Azure für Google OAuth2 gespeicherten Anmeldeinformationen?
Haben Sie den customerrors in der Config-off, um zu sehen, was der Stack-Trace ist? Das wäre hilfreich zu wissen. Ist die AppSettingsSecrets.config auch in Ihrer Lösung enthalten? wenn nicht, wird die Veröffentlichung es nicht einschließen. –
AppSettingsSecrets.config ist nicht in meiner Lösung enthalten, da die Link Best Practices sagt, dass es nicht sensible Daten sicher in der Lösung zu enthalten und hat es veröffentlicht (wie nur deutlich in der web.config-Datei einschließlich) - Wie in meiner Forschung festgestellt, so über dem Zweck ist, dass AppSettingsSecrets.config in der Tat nicht in dem veröffentlichen enthalten ist, die mich zu der Frage, wie bringt wieder kann ich sensible Daten sicher für OAuth2 verwenden usw. – jat247