/ / ASP.NET 4.6, Identity Framework i SQL Azure - asp.net, sql-server, framework-entity, azure, asp.net-identity

ASP.NET 4.6, Identity Framework i SQL Azure - asp.net, sql-server, entity-framework, azure, asp.net-identity

mam ASP 4.6 MVC Website (Wszystkie zaktualizowane do najnowszych pakietów Nuget), który wykorzystuje zintegrowaną strukturę tożsamości z Entity Framework na serwerze SQL.

Jeśli używam Ciąg połączenia z moim administratorem bazy danych wszystko działa, ale po przejściu do dodatkowego Databaseuser otrzymuję komunikat "Logowanie nie powiodło się dla użytkownika ...".

W tym celu utworzyłem użytkownika w głównej bazie danych:

CREATE LOGIN user1 with password="geheim"

A następnie dodał go do bazy danych w ten sposób:

CREATE USER user1 FROM LOGIN user1

EXEC sp_addrolemember "db_datareader", "user1"
EXEC sp_addrolemember "db_datawriter", "user1"

Łączę się z tymi danymi uwierzytelniającymi SQL Enterprise Manager do SQL Azure i zapytanie do mojej bazy danych, ale nie może używać tożsamości w bazie danych.

Jakieś pomysły, jakie role lub prawa są potrzebne do korzystania z bazy danych?

Odpowiedzi:

1 dla odpowiedzi № 1

Po długich debugowaniu Sesji znalazłemrozwiązanie: The Identity Framework wiąże się ze skanowaniem bazy danych, jeśli właściwość throwIfV1Schema ma wartość true. Ponieważ używam niestandardowego IdentityDbContext, musiałem zmienić konstruktor na:

Public Sub New()
MyBase.New(Settings.DSN, False)
End Sub

Teraz Startup of the Identity Framework potrzebuje tylko użytkownika dla bieżącej bazy danych.


0 dla odpowiedzi nr 2

Chciałbym spróbować zmienić nazwę LOGIN na inną niż nazwa użytkownika. Możesz znaleźć szczegółowe instrukcje, jak to ustawić i jakie role użyć pod następującym linkiem: Zabezpieczenia bazy danych SQL: zarządzanie dostępem do bazy danych i bezpieczeństwo logowania

Poniższy przykład pochodzi z tej strony, która jest podobna do tego, co masz.

-- first, connect to the master database
CREATE LOGIN login1 WITH password="<ProvidePassword>";
CREATE USER login1User FROM LOGIN login1;
EXEC sp_addrolemember "dbmanager", "login1User";
EXEC sp_addrolemember "loginmanager", "login1User";