* Update account authentication to use BCrypt.
This updates account authentication to use the BCrypt hashing algorithm in place of SHA512 and the need for a separate password salt.
Bcrypt is also more secure since it uses a "Work Factor" to discourage password brute force attacks and the implementaition is much cleaner overall since the salt is randomly generated and added as part of the password hash itself, effectively protecting against rainbow table attacks.
The default WorkFactor is set to 10 which is the considered the current industry standard. A server owner can easily increase this value to whatever level of security they desire which in turn will make password verification slower and much harder to crack if ever brute forced by a hacker.
Furthermore, BCrypt is used in PHP's passwordHash() function so this change will open up some more account management possibilities through PHP registration scripts, especially CMS's and database bridging.
* Update AuthDbContext.cs
* Add Update script for Auth database
* Update Account / AuthDb for in-place migrations
* Fix a whitespace error
* Add 'passwd' and 'set-accountpassword' commands
* Update changelog
* Update AuthenticationBase.sql
Revert Auth Base to previous commit
* Update changelog.md
* PlayerManager initial checkin
* OfflinePlayer initial checkin
* More progress
* Comment out Console.WriteLine debug messages
* Add property dictionaries to OfflinePlayer
* IPlayer initial checkin
* Add allegiance vars to IPlayer
* Couple comments
* More progress
* Add more to IPlayer
* line endings fix
* More progress. Compiles. Friends list works again.
* Friend status updates now work (again)
* PlayerManager save OfflinePlayers every 1hr
* Bye bye legacy AllPlayers
* using cleanup
* Allegience switch to PlayerManager progress
* More Allegiance progress
* More progress
* More allegiance progress
* IPlayer adds
* Migrate inversefriends to PlayerManager
* Switch WorldManager GetPlayerByGuid over to PlayerManager
* WorldManager Find(ObjectGuid characterGuid) removed. Use PlayerManager instead
* WorldManager FindByPlayerName(string name) removed. Use PlayerManager instead
* PlayerManager thread safety switched to ReaderWriterLockSlim
* More progress
* ServerStatus added TotalAccountsCreated, TotalCharactersCreated
* No more Player access/management stuff in WorldManager. It's all in PlayerManager now
* Player.IsOnline is no more.
* Friends AppearOnline fix
* Handle dead session better to switch player from online to offline
* Remove adding the + to names in ChatChannels. Name property should be changed to not include +
* serverstatus total accounts and characters on same line
* Allegience initial fix, still more bugs though
* PlayerManager minor cleanup
uint should be faster key than ObjectGuid
Changed the dictionaries to private. We don't want anyone outside of this class referencing them.
* Thread safety added to LScape.get_landcell
* Fixed an issue identified in EF 2.1 where context was being modified...
One of the nested loops was lazy loaded, then we iterated through those results pulling more records from the db. This raised an exception in EF 2.1.
The fix is to eager load the results that we iterate over.
Because of this, I've switched everything over to eager loading anyway. We don't do any lazy loading in ACE (we have no requirement to).
* NuGet packages updated + Changelog
* Couple cosmetic changes and null check fixes
* AuthenticationDatabase switched to Entity Framework Core, DB First
* Adds AsNoTracking() for performance and implements CreateAccount() instead of AddAccount()
* woops
* Auth db no longer needs to be init, or inherit from Database
* test fix hopefully
* Database objects in ACE.Entity would no longer be required
* Major WIP
* more progress
* AuthenticationDatabase switched to Entity Framework Core, DB First
* Adds AsNoTracking() for performance and implements CreateAccount() instead of AddAccount()
* woops
* Auth db no longer needs to be init, or inherit from Database
* test fix hopefully
* Database objects in ACE.Entity would no longer be required
* Major WIP
* more progress
* include missing CharacterCreateInfo
* GetCharacters changes to show how we can use the propertybag for these values
* Lot of progress with the WorldObject code
* comment add
* add biota to CreateWorldObject for loading inv from db
* ACE.Database cosmetic cleanups before I try to fix performance
* ACE.Server: Arrange initialization of manager in a more appropriate order
* This removes the interfaces from ACE.Database
* World should be init before shard
* Removed unused using statements
* Removed redudnant ToString()'s
* Removed some redundant type casts
* Removed redundant bool comparisons
* remove redundant initializers
* xml summary in invalid place switched to comments
* Use string interpolation
* use format separators
* Removed redundant parenths
* remove redundant else
* direct cast when safe
* redundant string interpolation
* xml summary fixes
* removed empty ctors
* fix modifier order
* Convert to auto property
* Convert some getters to method bodies
* use format separators
* changelog
* Auto-properties that can made to get-only
* fixed some references in XML comments
* remove redundant base()
* Revert "Auto-properties that can made to get-only"
This reverts commit 32a1225ce8.
* fix starter gear json
* Use collections count property
* simplify conditional ternary expression
* remove redundant return statements
* Constructors for abstract classes changed to protected
* Moved declarations to inner scopes
* Join declaration and assignments
* inline out variables
* Use enum extension methods instead of static methods
* inline out more variables
* more unused usings
* Remove specifying enums as ints
* Remove API and SecureAuth
* Fix up some issues
* might need to rem this
* more clean up
* hmm
* Cleanup
* busted test
* remove debug code
* Add a few tests to simple verify AuthDB can create accounts and change accesslevel
* update test for security purpose
* more cleanup
* and more
* Remove leftover usermodified
* Update changelog.md
* Kill Random weenie search for now
* WIP
* WIP - MVC app for weenie editor with auth overhaul in place
* removed redundant project
* more WIP. commiting to rebase
* WIP. API works, auth partially tied in, swagger works, api host works
* moved auth to a post with a body instead of get
* WIP. auth fully works. swagger UI supports auth model.
* added easier auth attribute, updated existing methods for consistency. should PR this after a couple more hours
* stylecop cleanups
* WIP. commiting to get help with session and connection issues
* forgot to save some changes to a sql script
* got all the login issues squared away. new auth system is done.
* WIP. getting an out of memory exception i cant track down
* WIP. PacketInboundLoginRequets reads the JwtToken with 2 bonus (invalid) prepended characters
* updated ReadString32L to suck a little less. i dont think this is 100% correct though.
* Authentication overhaul complete, APIs begun to support content editing
* appveyor cleanup
* appveyor cleanup, take 2
* appveyor cleanup, take 3
* appveyor cleanup, take 4
* Rename 2017-10-20-auth-overhaul.sql to 2017-10-20-00-auth-overhaul.sql
* Rename 2017-10-20-auth-overhaul-shard.sql to 2017-10-20-00-auth-overhaul-shard.sql
* Rename 2017-10-20-auth-overhaul-world.sql to 2017-10-20-00-auth-overhaul-world.sql
* Update MySqlInstall.bat
* Initial work on characterorm / Cleaned up test code to create world objects from the database.
* Forgot the change log again.
* Missed SQL File
* Moved debug commands over to AdminCommands as requested.
* Added command attributes
* Update for merge
* Fixed AppVeyor issue I hope
* One more Time
* Still trying to fix appvoyer
* OMG
* Fixed correclty this time - I hope
* Wip
* Update for merge
* Update changelog.md