| 

.NET C# Java Javascript Exception

1
Hallo.

Habe bei meinem ersten Projekt ein Problem. Und zwar geht es darum, sich in der FA bei meiner Web-Anwendung (MVC von ASP.NET) mit den Windows Accounts einloggen zu können.

Dazu wurden für unterschiedliche Rollen jeweils eigene AD Gruppen erstellt.

Habe dazu ein Tutorial verwendet, das soweit auch funktioniert, obwohl ich keine Domäne oder sonstiges eingeben musste. Funktioniert also vermutlich mit allen Benutzern dieser Domäne, was ja nicht so sein soll.

Derzeit habe ich vor jeder Action im Controller [Authorize] stehen, wo man ja auch eine Role angeben kann (=Name der AD Gruppe). Meine Frage ist nun wo ich definiere, welche Domäne, Rolle usw zugriff hat. Hierzu füge ich am besten den Teil aus meinem Programm (aus dem Tutorial) bei wo ich vermute, dass man das angibt. Falls es noch zu ungenau erklärt ist tut es mir leid, mache das zum ersten mal.

Also:

public AuthenticationResult SignIn(String username, String password)
{
#if DEBUG
// authenticates against your local machine - for development time
ContextType authenticationType = ContextType.Domain; //ContextType.Machine
#else
// authenticates against your Domain AD
ContextType authenticationType = ContextType.Domain;
#endif
PrincipalContext principalContext = new PrincipalContext(authenticationType);
bool isAuthenticated = false;
UserPrincipal userPrincipal = null;
try
{
isAuthenticated = principalContext.ValidateCredentials(username, password, ContextOptions.Negotiate);
if (isAuthenticated)
{
userPrincipal = UserPrincipal.FindByIdentity(principalContext, username);
}
}
catch (Exception)
{
isAuthenticated = false;
userPrincipal = null;
}

if (!isAuthenticated || userPrincipal == null)
{
//return new AuthenticationResult("Username or Password is not correct");
return new AuthenticationResult("Username oder Passwort nicht korrekt");
}

if (userPrincipal.IsAccountLockedOut())
{
// here can be a security related discussion weather it is worth
// revealing this information
return new AuthenticationResult("Your account is locked.");
}

if (userPrincipal.Enabled.HasValue && userPrincipal.Enabled.Value == false)
{
// here can be a security related discussion weather it is worth
// revealing this information
return new AuthenticationResult("Your account is disabled");
}

var identity = CreateIdentity(userPrincipal);

authenticationManager.SignOut(MyAuthentication.ApplicationCookie);
authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity);


return new AuthenticationResult();
}


private ClaimsIdentity CreateIdentity(UserPrincipal userPrincipal)
{
var identity = new ClaimsIdentity(MyAuthentication.ApplicationCookie, ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);
identity.AddClaim(new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "Active Directory"));
identity.AddClaim(new Claim(ClaimTypes.Name, userPrincipal.SamAccountName));
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userPrincipal.SamAccountName));
if (!String.IsNullOrEmpty(userPrincipal.EmailAddress))
{
identity.AddClaim(new Claim(ClaimTypes.Email, userPrincipal.EmailAddress));
}

// add your own claims if you need to add more information stored on the cookie

return identity;
}

Wäre echt super, wenn mir wer helfen könnte.

LG
28.06.2017