Jer*_*acs 15 c# openid asp.net-mvc simplemembership
我创建了一个新的MVC4/.NET4.5项目并启用了Google OpenID.这非常容易.
我的公司已经"google",我们的域/员工身份在Google Apps网站空间中.
如何才允许我们的Google Apps域对我的新网站进行身份验证?我希望这是一个简单的事情,如认证片.
以下是一些其他信息:
假设您正在使用 DotNetOpenAuth,请检查Stack Exchange Data Explorer的身份验证代码。
本质上,您只需在请求中询问电子邮件地址即可:
request.AddExtension(
new ClaimsRequest
{
Email = DemandLevel.Require,
}
);
Run Code Online (Sandbox Code Playgroud)
然后根据您的域白名单检查返回的地址(我假设您已经只接受 google OpenID)
var sreg = response.GetExtension<ClaimsResponse>();
If (!HasWhiteListedDomain(sreg.Email)) {
// Fail Here
}
Run Code Online (Sandbox Code Playgroud)
请注意,需要将这些代码添加到您的 Web.config 中,以获得用于获取上述工作的电子邮件的确切代码:
<configSections>
<section name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection" requirePermission="false" allowLocation="true" />
</configSections>
<dotNetOpenAuth>
<openid>
<relyingParty>
<behaviors>
<!-- The following OPTIONAL behavior allows RPs to use SREG only, but be compatible
with OPs that use Attribute Exchange (in various formats). -->
<add type="DotNetOpenAuth.OpenId.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth" />
</behaviors>
</relyingParty>
</openid>
</dotNetOpenAuth>
Run Code Online (Sandbox Code Playgroud)
编辑:
如果使用OAuthWebSecurity获取电子邮件将看起来像这样:
var userDataFromProvider = result.ExtraData;
var email = userDataFromProvider["email"];
Run Code Online (Sandbox Code Playgroud)