小编Clo*_*oud的帖子

自定义电子邮件确认令

我正在使用Identity 2.0框架进行用户管理.
不幸的是,在我的用例中,使用直接链接无法完成帐户激活/密码重置,因此用户必须从他的电子邮件中复制代码并将其粘贴到网站中.

UserManager默认GenerateEmailConfirmationTokenAsync方法生成的代码非常长,它跨越大约3行文本.我试图覆盖此方法,生成更加用户友好的更短代码.这不起作用,因为该ConfirmEmailAsync方法总是返回"无效令牌"(此方法根本不调用该GenerateEmailConfirmationTokenAsync方法).

我不知道如何存储确认代码,我更喜欢使用Identity Framework的默认存储机制,而不是手动将其存储在数据库中.

由于Identity 2.0框架是封闭源代码,我不知道如何继续.是否可以生成自定义(更短)的确认码以及除了我已经做过的事情之外我应该覆盖哪些方法?

c# asp.net asp.net-identity-2

8
推荐指数
1
解决办法
6601
查看次数

Google API:显示Google Talk/Chat和Google Hangout的在线联系人

我可能忽略了这一点,但我想在我的网站上实施Google Talk和Google Hangout,我正在寻找某种(官方的,最好是PHP)API调用来检索Google+用户的在线/离线联系人.(类似于Gmail旁边的在线联系人列表)

这是API功能可用,并且可以提供与该选项的用户选择联系人(或多个)启动一个谷歌的Hangouts并邀请?

google-talk google-plus google-shared-contacts

7
推荐指数
1
解决办法
4385
查看次数

Java类加载器跟踪

我的webapplication抛出以下ClassCastException:

java.lang.ClassCastException: org.postgresql.jdbc4.Jdbc4ResultSetMetaData
cannot be cast to org.postgresql.jdbc4.Jdbc4ResultSetMetaData
Run Code Online (Sandbox Code Playgroud)

显然这些类是相同的,所以这是一个奇怪的错误.

我发现使用-verbose:class该类Jdbc4ResultSetMetaData从两个jar文件加载,一个在我的Jetty lib/ext /目录中,另一个在我的webapplication中的/ WEB-INF/lib目录中.这些jar文件版本完全相同(md5sum完全相同)

这让我相信它确实是完全相同的类,但ClassCastException可能是由两个不同的类加载器加载同一个类引起的.

是否可以记录/跟踪使用jvm参数加载类的类加载器的名称或id?

java classloader classcastexception

6
推荐指数
0
解决办法
45
查看次数

Wicket页面测试,Jetty安全配置

我正在尝试使用Wicket Page Test来测试我的wicket项目.

启动测试会导致Jetty抛出此错误:

2015-03-24 17:46:24,789 WARN  [:] [main] [] [||] - org.eclipse.jetty.webapp.WebAppContext - Failed startup of context o.e.j.w.WebAppContext
java.lang.IllegalStateException: No LoginService for org.eclipse.jetty.security.authentication.BasicAuthenticator@4c451268 in org.eclipse.jetty.security.ConstraintSecurityHandler@4abb90f6
Run Code Online (Sandbox Code Playgroud)

我的testng套件看起来像这样:

<suite name="wicket-page-test-sample">
<test verbose="2" name="tests" annotations="JDK">
    <packages>
        <package name="..."></package>
    </packages>
    <classes>
        <class name="com.ttdev.wicketpagetest.WebPageTestContext"></class>
        <class name="nl.pack.test.MessagePanelTest"></class>
    </classes>
</test>
Run Code Online (Sandbox Code Playgroud)

测试类看起来像这样:

@Test
public class MessagePanelTest
{
    public void testOpenComponent()
    {

        final StringBuffer log = new StringBuffer();
        MockableSpringBeanInjector.mockBean("hibernateService", mock(HibernateService.class));

        WicketSeleniumDriver ws = WebPageTestContext.getWicketSelenium();
        ws.openComponent(new ComponentFactory()
        {
            private static final long serialVersionUID = 1L;

            public Component createComponent(String id) …
Run Code Online (Sandbox Code Playgroud)

java testng wicket jetty wicket-tester

5
推荐指数
0
解决办法
329
查看次数

Eclipse - Glassfish 4调试启动超时

每次我尝试在调试模式下启动时,Glassfish 4.0 final都会给出超时.服务器上的正常运行(来自Eclipse)在没有超时的情况下工作.
我尝试从Eclipse Juno和Eclipse Kepler运行Glassfish 4.0,两者都有正确的调试端口配置(9009),两者都无法在调试中启动Glassfish.

这是一个已知的问题吗?我该如何解决?

eclipse-kepler glassfish-4

4
推荐指数
1
解决办法
8263
查看次数

为什么 Django/Django REST Framework 不深入验证 CSRF 令牌,即使使用强制 CSRF 也是如此?

我正在尝试对向匿名用户开放的 Django Rest API 强制执行 CSRF。为此,我尝试了两种不同的方法:

  1. CSRFAPIView从一个基本视图扩展选定的 API 视图,该视图@ensure_csrf_cookie在调度方法上有一个注释。
  2. 使用基于 SessionAuthentication 的自定义身份验证类,enforce_csrf()无论用户是否登录都适用。

在这两种方法中,CSRF 检查似乎都在表面上起作用。如果 cookie 中缺少 CSRF 令牌或令牌长度不正确,端点将返回403 - Forbidden. 但是,如果我编辑 cookie 中的 CSRF 令牌的值,则该请求将被毫无问题地接受。所以我可以使用 CSRF 的随机值,只要它的长度正确。

此行为似乎偏离了常规 Django 登录视图,其中 CSRF 的内容确实很重要。我正在本地设置中使用 debug/test_environment 标志进行测试。

我在 DRF 中进行的自定义 CSRF 检查未经过深入验证的原因可能是什么?

自定义身份验证的代码片段:

class RestCsrfAuthentication(SessionAuthentication):
    def authenticate(self, request):
        self.enforce_csrf(request)
        rotate_token(request)
        return None
Run Code Online (Sandbox Code Playgroud)

并在设置中:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'csrfexample.authentication.RestCsrfAuthentication',
    ]
}
Run Code Online (Sandbox Code Playgroud)

django csrf django-rest-framework

3
推荐指数
1
解决办法
2019
查看次数

Keycloak 注销不会结束会话

我在使用 Spring Framework 和 Jetty 8.1 的 Java 应用程序中使用 Keycloak 3.4 和 Keycloak Jetty-81-Adapter 3.4。

根据 Keycloak 文档,我应该能够在 Java EE 应用程序中使用 HttpServletRequest 从 Keycloak 注销。但是,这在我的情况下不起作用,即使 Jetty 支持 HttpServletRequests。

您可以通过多种方式注销 Web 应用程序。对于 Java EE servlet 容器,您可以调用 HttpServletRequest.logout()..

如果我尝试以这种方式注销,我会被重定向到 keycloak(登录屏幕,可选择从多个领域登录中进行选择)。然而,当我选择我的首选领域时,我会立即再次登录到 Web 应用程序,而无需提供任何凭据。

我尝试了另一种方法,通过重定向到 Keycloak:

对于其他浏览器应用,可以将浏览器重定向到
http://auth-server/auth/realms/ {realm-name}/protocol/openid-connect/logout?redirect_uri=encodedRedirectUri

但它会在 Keycloak 日志中引发连接拒绝错误,因为 Keycloak 尝试以直接方式调用我的 web 应用程序。它对保持活动状态的 Keycloak 会话没有影响。我强烈希望不需要从 Keycloak 直接到 webapp 的服务器端调用。

HttpServletRequest.logout()在我的情况下,为什么不破坏 keycloak 会话的任何建议?HttpServletRequest 的 Jetty 实现是否与 Java EE 实现如此不同以至于它根本无法工作?

java logout embedded-jetty keycloak

2
推荐指数
2
解决办法
2万
查看次数