Hedef: Bir ASP.NET Web Uygulamasını Azure'a barındıran ve Google, Twilio ve SendGrid için OAuth2'yi kullanıcı bilgileri için bir veritabanı ile birlikte kullanma.Web.config için Web.config dışındaki kimlik bilgilerini güvenli bir şekilde nasıl kullanabilirsiniz? ASP.NET & Azure için
Sorun: Web.config dosyamda yer alan "appSettings" i dışarıdan bir yapılandırma dosyası kullandığımda yayımlamadan sonra hatalar alıyorum. Azure'da, yayınlanan Web.config ayarlarını araştırma ve anlayışımdan geçersiz kılan Google OAuth2 için güvenli bir şekilde depolanması için kimlik bilgileri girdim. Azure için koduma duyarlı kimlik bilgilerim arasında doğru ve güvenli bir şekilde nasıl kullanırım?
Araştırma: Ben adım bu bağlantıyı adımı takip ettik -
https://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-deploy-aspnet-mvc-app-membership-oauth-sql-database/
Bu bağlantı aynı zamanda aşağıda tarihinde OAuth2 uygulanması için başka bağlantıya yol açar -
www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on#goog
Ancak bu güvensiz koyar hassas bir ASP.NET bilgisinin Azure'a dağıtımı için güvenli/en iyi uygulamalar için buraya açılan bir Güvenlik notuyla belirtilen web.config dosyasındaki hassas bilgiler -
Anlayışım, web.config dosyasındaki hassas verileri/kimlik bilgilerini barındıran harici bir dosyaya başvuruda bulunmanın en iyi uygulamadır. IIS'nin * .config hizmeti sunmadığını ve "git add *" öğesinin altında yer alan yapılandırma dosyasının bulunduğu konumdan dolayı, depoya duyarlı kimlik bilgilerini eklemeyeceğini unutmayın.
Web.config -
</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 (2. hatta Not appSettings) düzgün/güvenli dan AppSettingsSecrets.config benim Kimliği ve Sırrı başvuru nasıl
<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>
7. adımda listelenen kod içinde?
www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on#goog
İlgili kod (Google Kimlik Doğrulama için kullanılan dibi dikkat edin) aşağıda listelenmiştir: Bu bilgileri Azure, sırları dağıtmak için öğretici Ayrıca
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");
}
listelenir:
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.
Bu, hassas bilgileri portal üzerinden Azure'a manuel olarak girebileceğimi ve (varsaydığımı varsayalım) bu işlemin güvenli bir yöntem olduğunu söyler. Web sayfamın bilgilere erişmesine ve kullanmasına izin verirken özel hassas bilgiler. (yanılıyorsam beni düzeltin!) Ancak, bir görüntü bağlantı olarak aşağıda gösterildiği gibi el benim web uygulaması artık çalışma zamanı hatası atıyor, bu bilgiyi girdiğinde:
Herhangi öneriler veya diğer bağlantılar veya işaretçiler/ipuçları büyük ölçüde takdir edilecektir! Şimdiden teşekkürler!
DÜZENLEME: web.config dosyasında customErrors kapatarak ve bu site şimdi veren hatadır Azure dağıtım yeniledikten sonra - Esasen benim kod ben depoladığınız saklanan Google OAuth2 kimlik bilgileri çekerek değil Azure. Google OAuth2 için Azure'da depolanmış kimlik bilgilerini almak için kodumu nasıl alabilirim? NewSiteError
Yığın izinin ne olduğunu görmek için customErrors'ı yapılandırmada mı kapattınız? Bu bilmek yardımcı olacaktır. Ayrıca çözümünüzde AppSettingsSecrets.config var mı? değilse, yayınlama içermez. –
AppSettingsSecrets.config çözümümde yer almıyor, çünkü En İyi Uygulamalar linki, çözüm içinde hassas verilerin dahil edilmesinin güvenli olmadığını ve yayınlanmasını sağladığını söylüyor (web.config dosyasında da olduğu gibi) - Araştırmamda belirtildiği gibi Amacın üstünde AppSettingsSecrets.config gerçekten de yayınlamada yer almıyor, bu da bana OAuth2 vb. için hassas verileri nasıl güvenli bir şekilde kullanabileceğimi sorusuna geri getiriyor. – jat247